Sie sollten den Gastbenutzer in der msdb-Datenbank nicht in SQL Server
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 Features von Microsoft SQL Server 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, kann in Ihrer Umgebung eines oder mehrere der folgenden Symptome auftreten.
Hinweis
Der Text des Fehlers kann je nach Szenario leicht variieren. Die zugrunde liegende Ursache ist jedoch im Wesentlichen die gleiche. Diese Ursache sind unzureichende Berechtigungen in der msdb-Datenbank. Diese Symptome treten auf, wenn Objekt-Explorer versucht, die richtlinienbasierte Verwaltung status jeder Datenbank anzuzeigen. Objekt-Explorer verwendet die Berechtigungen der aktuellen Anmeldung, um diese Informationen in der msdb-Datenbank abzufragen, wodurch der Fehler verursacht wird.
Symptom 1
Wenn in SQL Server 2012 und höheren Umgebungen ein Benutzer, der nicht Mitglied der festen Serverrolle Sysadmin in SQL Server ist und in msdb keine entsprechenden Berechtigungen erteilt hat, versucht, den Knoten Datenbanken oder einen der Ordner unter diesem Knoten zu erweitern, erhält er eine Fehlermeldung, die der folgenden ähnelt:
Das angeforderte Dialogfeld kann nicht angezeigt werden. ZUSÄTZLICHE INFORMATIONEN: Das angeforderte Dialogfeld kann nicht angezeigt werden. (SqlMgmt) Eine Ausnahme ist beim Ausführen einer Transact-SQL-Anweisung oder eines Batches aufgetreten. (Microsoft.SqlServer.ConnectionInfo)
Der Benutzername> des Serverprinzipals <kann unter dem aktuellen Sicherheitskontext nicht 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 nicht Mitglied der festen Serverrolle Sysadmin in SQL Server ist und in msdb keine entsprechenden Berechtigungen erteilt hat, versucht, den Knoten Datenbanken oder einen der Ordner unter diesem Knoten zu erweitern, erhält er eine Fehlermeldung, die der folgenden ähnelt:
Fehler beim Abrufen von Daten für diese Anforderung. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Weitere Informationen:
Eine Ausnahme ist beim Ausführen einer Transact-SQL-Anweisung oder eines Batches aufgetreten.
(Microsoft.SqlServer.ConnectionInfo)
Der Serverprinzipal <Servername> kann unter dem aktuellen Sicherheitskontext nicht auf die Datenbank "msdb" zugreifen. (Microsoft SQL Server, Fehler: 916)
Hinweis
Das Erweitern des Datenbankknotens ist nur eine der Aktivitäten, für die die Verbindungsberechtigung für das Gastkonto mit der msdb-Datenbank erforderlich ist. Ein ähnlicher Fehler kann bei jeder Aktivität auftreten, die mindestens minimalen Zugriff auf die msdb-Datenbank erfordert.
Ermitteln des Problems
Um zu bestimmen, 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 dem 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 | GEWÄHREN |
Wenn Sie entweder ein leeres Resultset erhalten oder in dem state_desc
hier erwähnten Resultset DENY anzeigt, wird der Gastbenutzer in der msdb-Datenbank deaktiviert. Möglicherweise erhalten Sie den Fehler 916, wenn Sie eine Verbindung mit einer Datenbank herstellen.
Beheben des Problems
Um das Problem zu beheben, führen Sie die folgende Abfrage in SQL Server Management Studio als Mitglied der festen Serverrolle sysadmin aus:
USE msdb;
GRANT connect TO guest;
GO
References
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für