U moet de gastgebruiker niet uitschakelen in de msdb-database in SQL Server

In dit artikel worden verschillende problemen beschreven die kunnen optreden wanneer u de gastgebruiker uitschakelt in de msdb-database in SQL Server.

Originele productversie: SQL Server
Origineel KB-nummer: 2539091

Symptomen wanneer de gastgebruiker is uitgeschakeld in de msdb-database

Sommige Microsoft SQL Server-functies werken alleen als de gastgebruiker is ingeschakeld in de msdb-database. In dit artikel worden enkele problemen beschreven die kunnen optreden als u de gastgebruiker uitschakelt in de msdb-database. Het artikel bevat ook informatie over het oplossen van deze problemen.

Wanneer de gastgebruiker is uitgeschakeld in de msdb-database, krijgt u mogelijk een fout MSSQLSERVER_916 wanneer de gebruiker het knooppunt Databases in Management Studio uitvouwt of wanneer een servertoepassing verbinding probeert te maken met SQL Server. U kunt een of meer van de volgende symptomen in uw omgeving ondervinden wanneer dit probleem zich voordoet.

Opmerking

De tekst van de fout kan enigszins variƫren, afhankelijk van het scenario. De onderliggende oorzaak is echter in wezen hetzelfde. Deze oorzaak is onvoldoende bevoegdheden in de msdb-database. Deze symptomen treden op wanneer Objectverkenner de status van op beleid gebaseerd beheer van elke database probeert weer te geven. Objectverkenner gebruikt de machtigingen van de huidige aanmelding om een query uit te voeren op de msdb-database voor deze informatie, waardoor de fout wordt veroorzaakt.

Symptoom 1

In SQL Server omgevingen van 2012 en hoger ontvangt een gebruiker die geen lid is van de vaste serverfunctie Sysadmin in SQL Server en die niet anderszins de juiste machtigingen in msdb heeft gekregen, het knooppunt Databases of een van de mappen onder dat knooppunt probeert uit te vouwen, een foutbericht dat er ongeveer als volgt uitziet:

Kan het aangevraagde dialoogvenster niet weergeven. AANVULLENDE INFORMATIE: kan het aangevraagde dialoogvenster niet weergeven. (SqlMgmt) Er is een uitzondering opgetreden tijdens het uitvoeren van een Transact-SQL-instructie of batch. (Microsoft.SqlServer.ConnectionInfo)

De gebruikersnaam> van de server-principal <heeft geen toegang tot de database msdb in de huidige beveiligingscontext. (Microsoft SQL Server, Fout: 916)

Symptoom 2

In SQL Server 2008- en SQL Server 2008 R2-omgevingen ontvangt een gebruiker die geen lid is van de vaste serverfunctie Sysadmin in SQL Server en die niet anderszins de juiste machtigingen in msdb heeft gekregen, het knooppunt Databases of een van de mappen onder dat knooppunt probeert uit te breiden, een foutbericht dat er ongeveer als volgt uitziet:

Kan de gegevens voor deze aanvraag niet ophalen. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Aanvullende informatie:
Er is een uitzondering opgetreden tijdens het uitvoeren van een Transact-SQL-instructie of batch.
(Microsoft.SqlServer.ConnectionInfo)
De server-principal <Servernaam> heeft geen toegang tot de database 'msdb' in de huidige beveiligingscontext. (Microsoft SQL Server, Fout: 916)

Opmerking

Het uitbreiden van het databaseknooppunt is slechts een van de activiteiten waarvoor verbinding is vereist voor het gastaccount met de msdb-database. Een vergelijkbare fout kan optreden bij elke activiteit waarvoor ten minste minimale toegang tot de msdb-database is vereist.

Het probleem bepalen

Als u wilt bepalen of de gastgebruiker correct is geconfigureerd in de msdb-database, voert u de volgende query uit als lid van de vaste serverfunctie 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

Als u een resultatenset ontvangt die er ongeveer als volgt uitziet, beschikt de gastgebruiker over de benodigde machtigingen.

grantee_name Klasse class_desc major_id minor_id grantee_principal_id grantor_principal_id Type permission_name Staat state_desc
Gast 0 DATABASE 0 0 2 1 CO VERBINDING G VERLENEN

Als u een lege resultatenset ontvangt of als deny state_desc wordt weergegeven in de resultatenset die hier wordt vermeld, wordt de gastgebruiker uitgeschakeld in de msdb-database. Mogelijk krijgt u fout 916 wanneer u verbinding maakt met een database.

Het probleem oplossen

U kunt het probleem oplossen door de volgende query uit te voeren in SQL Server Management Studio als lid van de vaste serverfunctie sysadmin:

USE msdb;

GRANT connect TO guest;

GO

Verwijzingen