Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden verschiedene Probleme beschrieben, die auftreten können, wenn Sie den Gastbenutzer in der msdb-Datenbank in SQL Server deaktivieren.
Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2539091
Symptome, wenn der Gastbenutzer in der msdb-Datenbank deaktiviert ist
Damit einige Microsoft SQL Server-Features funktionieren, muss der Gastbenutzer in der msdb-Datenbank aktiviert sein. In diesem Artikel werden einige Probleme beschrieben, die auftreten können, wenn Sie den Gastbenutzer in der msdb-Datenbank deaktivieren. Der Artikel enthält auch Informationen zum Beheben dieser Probleme.
Wenn der Gastbenutzer in der msdb-Datenbank deaktiviert ist, erhalten Sie möglicherweise eine Fehlermeldung MSSQLSERVER_916 , wenn der Benutzer den Knoten "Datenbanken" in Management Studio erweitert oder wenn eine Serveranwendung versucht, eine Verbindung mit SQL Server herzustellen. Wenn dieses Problem auftritt, treten möglicherweise mindestens eins der folgenden Symptome in Ihrer Umgebung auf.
Notiz
Der Text des Fehlers kann je nach Szenario geringfügig variieren. Die zugrunde liegende Ursache ist jedoch im Wesentlichen identisch. Die Ursache ist unzureichende Berechtigungen in der msdb-Datenbank. Diese Symptome treten auf, wenn Objekt-Explorer versucht, den Richtlinienbasierten Verwaltungsstatus jeder Datenbank anzuzeigen. Objekt-Explorer verwendet die Berechtigungen der aktuellen Anmeldung, um die msdb-Datenbank für diese Informationen abzufragen, wodurch der Fehler verursacht wird.
Symptom 1
Wenn in SQL Server 2012 und höheren Umgebungen ein Benutzer, der kein Mitglied der Festen Serverrolle "Sysadmin" in SQL Server ist und anderenfalls keine entsprechenden Berechtigungen in msdb erteilt hat, versucht, den Knoten "Datenbanken" oder einen der Ordner unter diesem Knoten zu erweitern, wird eine Fehlermeldung angezeigt, die etwa wie folgt aussieht:
Das angeforderte Dialogfeld kann nicht angezeigt werden. ZUSÄTZLICHE INFORMATIONEN: Das angeforderte Dialogfeld kann nicht angezeigt werden. (SqlMgmt) Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Batches. (Microsoft.SqlServer.ConnectionInfo)
Der Serverprinzipalbenutzername <> kann nicht unter dem aktuellen Sicherheitskontext auf die Datenbank msdb zugreifen. (Microsoft SQL Server, Fehler: 916)
Symptom 2
Wenn in SQL Server 2008- und SQL Server 2008 R2-Umgebungen ein Benutzer, der kein Mitglied der Sysadmin-Fixed-Serverrolle in SQL Server ist und anderenfalls keine entsprechenden Berechtigungen in msdb erteilt hat, versucht, den Knoten "Datenbanken" oder einen der Ordner unter diesem Knoten zu erweitern, wird eine Fehlermeldung angezeigt, die etwa wie folgt aussieht:
Fehler beim Abrufen von Daten für diese Anforderung. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Weitere Informationen:
Beim Ausführen einer Transact-SQL-Anweisung oder eines Batches ist eine Ausnahme aufgetreten.
(Microsoft.SqlServer.ConnectionInfo)
Der Serverprinzipalservername <> kann nicht unter dem aktuellen Sicherheitskontext auf die Datenbank "msdb" zugreifen. (Microsoft SQL Server, Fehler: 916)
Notiz
Das Erweitern des Datenbankknotens ist nur eine der Aktivitäten, die die Verbindungsberechtigung für das Gastkonto mit der msdb-Datenbank erfordern. Ein ähnlicher Fehler kann bei jeder Aktivität auftreten, die mindestens minimalen Zugriff auf die msdb-Datenbank erfordert.
Ermitteln des Problems
Um zu ermitteln, ob der Gastbenutzer in der msdb-Datenbank ordnungsgemäß konfiguriert ist, führen Sie die folgende Abfrage als Mitglied der festen Serverrolle "sysadmin" aus:
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
Wenn Sie ein Resultset erhalten, das der folgenden ähnelt, verfügt der Gastbenutzer über die erforderlichen Berechtigungen.
| grantee_name | class | class_desc | major_id | minor_id | grantee_principal_id | grantor_principal_id | type | permission_name | state | state_desc |
|---|---|---|---|---|---|---|---|---|---|---|
| Gast | 0 | DATENBANK | 0 | 0 | 2 | 1 | CO | CONNECT | G | GRANT |
Wenn Sie entweder ein leeres Resultset erhalten oder wenn " state_desc DENY" im hier erwähnten Resultset angezeigt wird, wird der Gastbenutzer in der msdb-Datenbank deaktiviert. Möglicherweise erhalten Sie fehler 916, wenn Sie eine Verbindung mit einer Datenbank herstellen.
So lösen Sie das Problem:
Führen Sie zum Beheben des Problems die folgende Abfrage in SQL Server Management Studio als Mitglied der festen Serverrolle "sysadmin" aus:
USE msdb;
GRANT connect TO guest;
GO