Ao acessar o SQL Server com versões do SSMS (2012/2014 e 2016), a abertura da lista de bancos de dados do explorador de objetos é muito lenta. Se eu tentar usando o SSMS 2008 R2 na mesma instância, o resultado será => exibição instantânea.
Nota: A conta é sysadmin, todos os bancos de dados estão com o fechamento automático desabilitado e não estou me conectando a um servidor remoto. Está na minha máquina local!
Percebi que há uma pequena diferença comparando as consultas geradas do SSMS 2008 e 2012/2014/2016 ao abrir a lista de bancos de dados.
Todos eles estão usando a função has_dbaccess , exceto SSMS 2008.
Por exemplo:
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
Há uma enorme diferença de desempenho se eu remover a função. Eu acho que eles devem adicionar uma condição no início da consulta, caso seja uma conta sysadmin, apenas não verifique as permissões em todos os bancos de dados. Isto faz algum sentido?
Esse problema foi finalmente corrigido no novo SSMS 17.9.
Você pode obtê-lo aqui .
Resolvi isso alterando da autenticação do Windows para a autenticação do SQL Server, conforme proposto aqui . (Sei que nem todos podem fazer isso.)
O problema ainda existe no SSMS 18.9 e no SQL Server 2019.
A função has_dbaccess definitivamente parece ser o problema.