Você não deve desabilitar o usuário convidado no banco de dados msdb no SQL Server

Este artigo descreve vários problemas que podem ocorrer quando você desabilita o usuário convidado no banco de dados msdb no SQL Server.

Versão original do produto: SQL Server
Número de KB original: 2539091

Sintomas quando o usuário convidado é desabilitado no banco de dados msdb

Para que alguns recursos do Microsoft SQL Server funcionem, o usuário convidado deve estar habilitado no banco de dados msdb. Este artigo descreve alguns problemas que você pode enfrentar se desabilitar o usuário convidado no banco de dados msdb. O artigo também fornece informações sobre como resolve esses problemas.

Quando o usuário convidado é desabilitado no banco de dados msdb, você pode receber erro MSSQLSERVER_916 quando o usuário expande o nó Bancos de Dados no Management Studio se expande ou quando um aplicativo de servidor tenta se conectar a SQL Server. Você pode experimentar um ou mais dos seguintes sintomas em seu ambiente quando esse problema ocorrer.

Observação

O texto do erro pode variar ligeiramente, dependendo do cenário. No entanto, a causa subjacente é essencialmente a mesma. Essa causa é privilégios insuficientes no banco de dados msdb. Esses sintomas ocorrem quando Pesquisador de Objetos tenta mostrar o status de Gerenciamento Baseado em Política de cada banco de dados. Pesquisador de Objetos usa as permissões do logon atual para consultar o banco de dados msdb para obter essas informações, o que causa o erro.

Sintoma 1

Em ambientes SQL Server 2012 e posteriores, quando um usuário que não é membro da função de servidor fixa Sysadmin em SQL Server e não concedeu permissões apropriadas no msdb tenta expandir o nó Bancos de Dados ou qualquer uma das pastas sob esse nó, eles recebem uma mensagem de erro que se assemelha ao seguinte:

Não é possível mostrar a caixa de diálogo solicitada. INFORMAÇÕES ADICIONAIS: não é possível mostrar a caixa de diálogo solicitada. (SqlMgmt) Uma exceção ocorreu durante a execução de uma instrução transact-SQL ou lote. (Microsoft.SqlServer.ConnectionInfo)

O nome> de usuário da entidade <de servidor não é capaz de acessar o msdb de banco de dados no contexto de segurança atual. (Microsoft SQL Server, Erro: 916)

Sintoma 2

Em ambientes SQL Server 2008 e SQL Server 2008 R2, quando um usuário que não é membro da função de servidor fixa Sysadmin em SQL Server e não concedeu permissões apropriadas no msdb tenta expandir o nó Bancos de Dados ou qualquer uma das pastas sob esse nó, eles recebem uma mensagem de erro que se assemelha ao seguinte:

Falha ao recuperar dados dessa solicitação. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Informações adicionais:
Uma exceção ocorreu durante a execução de uma instrução transact-SQL ou lote.
(Microsoft.SqlServer.ConnectionInfo)
O servidor principal <Servername> não é capaz de acessar o banco de dados "msdb" no contexto de segurança atual. (Microsoft SQL Server, Erro: 916)

Observação

A expansão do nó Banco de Dados é apenas uma das atividades que exigem a permissão de conexão da conta de convidado ao banco de dados msdb. Um erro semelhante pode ocorrer com qualquer atividade que exija pelo menos acesso mínimo ao banco de dados msdb.

Como determinar o problema

Para determinar se o usuário convidado está configurado corretamente no banco de dados msdb, execute a seguinte consulta como membro da função de servidor fixa sysadmin:

USE msdb;

SELECT prins.name AS grantee_name, perms.*

FROM sys.database_permissions AS perms

JOIN sys.database_principals AS prins

ON perms.grantee_principal_id = prins.principal_id

WHERE prins.name = 'guest' AND perms.permission_name = 'CONNECT';

GO

Se você receber um conjunto de resultados que se assemelha ao seguinte, o usuário convidado terá as permissões necessárias.

grantee_name class class_desc major_id minor_id grantee_principal_id grantor_principal_id type permission_name state State_desc
Convidado 0 DATABASE 0 0 2 1 CO CONNECT G GRANT

Se você receber um conjunto de resultados vazio ou se o state_desc mostrar DENY no conjunto de resultados mencionado aqui, o usuário convidado será desabilitado no banco de dados msdb. Você pode receber o erro 916 ao se conectar a um banco de dados.

Como resolve o problema

Para resolve o problema, execute a seguinte consulta no SQL Server Management Studio como membro da função de servidor fixa sysadmin:

USE msdb;

GRANT connect TO guest;

GO

Referências