Non è consigliabile disabilitare l'utente guest nel database msdb in SQL Server
Questo articolo descrive diversi problemi che possono verificarsi quando si disabilita l'utente guest nel database msdb in SQL Server.
Versione originale del prodotto: SQL Server
Numero KB originale: 2539091
Sintomi quando l'utente guest è disabilitato nel database msdb
Affinché alcune funzionalità di Microsoft SQL Server funzionino, l'utente guest deve essere abilitato nel database msdb. Questo articolo descrive alcuni problemi che potrebbero verificarsi se si disabilita l'utente guest nel database msdb. L'articolo fornisce anche informazioni su come risolvere tali problemi.
Quando l'utente guest è disabilitato nel database msdb, è possibile che venga visualizzato un errore MSSQLSERVER_916 quando l'utente espande il nodo Database in Management Studio o quando un'applicazione server tenta di connettersi a SQL Server. Quando si verifica questo problema, è possibile che si verifichi uno o più dei sintomi seguenti nell'ambiente.
Nota
Il testo dell'errore può variare leggermente, a seconda dello scenario. Tuttavia, la causa sottostante è essenzialmente la stessa. Tale causa non è sufficiente nel database msdb. Questi sintomi si verificano quando Esplora oggetti tenta di visualizzare lo stato di gestione basata su criteri di ogni database. Esplora oggetti usa le autorizzazioni dell'accesso corrente per eseguire una query sul database msdb per ottenere queste informazioni, che causa l'errore.
Sintomo 1
Negli ambienti SQL Server 2012 e versioni successive, quando un utente che non è membro del ruolo predefinito del server Sysadmin in SQL Server e non dispone delle autorizzazioni appropriate in msdb tenta di espandere il nodo Database o una delle cartelle in tale nodo, riceve un messaggio di errore simile al seguente:
Impossibile visualizzare la finestra di dialogo richiesta. INFORMAZIONI AGGIUNTIVE: impossibile visualizzare la finestra di dialogo richiesta. (SqlMgmt) Si è verificata un'eccezione durante l'esecuzione di un'istruzione o un batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
Il nome utente> dell'entità <server non è in grado di accedere al database msdb nel contesto di sicurezza corrente. (Microsoft SQL Server, errore: 916)
Sintomo 2
Negli ambienti SQL Server 2008 e SQL Server 2008 R2, quando un utente che non è membro del ruolo predefinito del server Sysadmin in SQL Server e non ha concesso autorizzazioni appropriate in msdb tenta di espandere il nodo Database o una delle cartelle in tale nodo, riceve un messaggio di errore simile al seguente:
Impossibile recuperare i dati per questa richiesta. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Altre informazioni:
Si è verificata un'eccezione durante l'esecuzione di un'istruzione o un batch Transact-SQL.
(Microsoft.SqlServer.ConnectionInfo)
Il server principal <Servername> non è in grado di accedere al database "msdb" nel contesto di sicurezza corrente. (Microsoft SQL Server, errore: 916)
Nota
L'espansione del nodo Database è solo una delle attività che richiede l'autorizzazione di connessione per l'account guest al database msdb. Un errore simile può verificarsi con qualsiasi attività che richiede almeno l'accesso minimo al database msdb.
Come determinare il problema
Per determinare se l'utente guest è configurato correttamente nel database msdb, eseguire la query seguente come membro del ruolo predefinito del server 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 si riceve un set di risultati simile al seguente, l'utente guest dispone delle autorizzazioni necessarie.
grantee_name | Classe | class_desc | major_id | minor_id | grantee_principal_id | grantor_principal_id | tipo | permission_name | Stato | state_desc |
---|---|---|---|---|---|---|---|---|---|---|
Ospite | 0 | DATABASE | 0 | 0 | 2 | 1 | CO | CONNETTERSI | G | CONCEDERE |
Se si riceve un set di risultati vuoto o se viene state_desc
visualizzato DENY nel set di risultati indicato qui, l'utente guest viene disabilitato nel database msdb. È possibile che venga visualizzato l'errore 916 quando ci si connette a un database.
Come risolvere il problema
Per risolvere il problema, eseguire la query seguente in SQL Server Management Studio come membro del ruolo predefinito del server sysadmin:
USE msdb;
GRANT connect TO guest;
GO
Riferimenti
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per