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