Sql-Server

SSMS 2012 / 2014 / 2016 對象資源管理器在具有許多數據庫的伺服器上展開數據庫列表時掛起

  • February 9, 2022

使用 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

如果我刪除該功能,則會有巨大的性能差異。我想他們應該在查詢的請求中添加一個條件,以防萬一它是一個系統管理員帳戶,只是不要檢查每個數據庫中的權限。這有什麼意義嗎?

這個問題最終在新的 SSMS 17.9 中得到修復。

你可以在這裡得到它。

我通過將 Windows 身份驗證更改為 SQL Server 身份驗證解決了這個問題,如此處提出。(我意識到不是每個人都能做到這一點。)

該問題在 SSMS 18.9 和 SQL Server 2019 中仍然存在。

has_dbaccess 函式似乎肯定是問題所在。

引用自:https://dba.stackexchange.com/questions/163669