web-dev-qa-db-ja.com

SSMS 2012/2014/2016オブジェクトエクスプローラーが、多数のDBを持つサーバーでデータベースリストを展開するとハングする

SSMSバージョン(2012/2014および2016)でSQL Serverにアクセスすると、オブジェクトエクスプローラーからデータベースリストを開くのが非常に遅くなります。同じインスタンスでSSMS 2008 R2を使用して試した場合、結果は=>インスタント表示になります。

注:アカウントはsysadminであり、すべてのデータベースで自動クローズが無効になっており、リモートサーバーに接続していません。それは私のローカルマシン上にあります!

データベースリストを開くときに、SSMS 2008と2012/2014/2016から生成されたクエリを比較すると、わずかな違いがあることに気づきました。

SSMS 2008を除き、それらすべてがhas_dbaccess関数を使用しています。

例えば:

SELECT
dtb.name AS [Name],
dtb.database_id AS [ID],
CAST(has_dbaccess(dtb.name) AS bit) AS [IsAccessible]
FROM
master.sys.databases AS dtb
ORDER BY
[Name] ASC

関数を削除すると、パフォーマンスに大きな違いがあります。クエリの先頭に条件を追加する必要があると思います。sysadminアカウントの場合は、すべてのデータベースのアクセス許可を確認しないでください。それは意味がありますか?

2
Danilo Braga

この問題は、新しいSSMS 17.9でようやく修正されました。

あなたはそれを得ることができます ここ

1
Danilo Braga