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.

Oorspronkelijke productversie: SQL Server
Oorspronkelijk KB-nummer: 2539091

Symptomen wanneer de gastgebruiker is uitgeschakeld in de msdb-database

Als u wilt dat sommige Microsoft SQL Server-functies werken, moet de gastgebruiker zijn 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, treedt er mogelijk een fout op MSSQLSERVER_916 wanneer de gebruiker het knooppunt Databases in Management Studio uitvouwt of wanneer een servertoepassing verbinding probeert te maken met SQL Server. Mogelijk ondervindt u een of meer van de volgende symptomen in uw omgeving wanneer dit probleem optreedt.

Notitie

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 probeert de status Van beheer op basis van beleid van elke database weer te geven. Objectverkenner de machtigingen van de huidige aanmelding gebruikt om een query uit te voeren op de msdb-database voor deze informatie, waardoor de fout wordt veroorzaakt.

Symptoom 1

Wanneer in SQL Server 2012- en hogeromgevingen een gebruiker die geen lid is van de vaste serverrol Sysadmin in SQL Server en anders niet de juiste machtigingen in msdb krijgt, probeert het knooppunt Databases of een van de mappen onder dat knooppunt uit te vouwen, wordt er een foutbericht weergegeven dat er ongeveer als volgt uitziet:

Kan het aangevraagde dialoogvenster niet weergeven. AANVULLENDE INFORMATIE: Kan het gevraagde 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, wanneer een gebruiker die geen lid is van de vaste serverrol Sysadmin in SQL Server en anders niet de juiste machtigingen in msdb krijgt, probeert het knooppunt Databases of een van de mappen onder dat knooppunt uit te vouwen, een foutbericht dat er ongeveer als volgt uitziet:

'Ophalen van gegevens voor deze aanvraag is mislukt. (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)

Notitie

Het uitbreiden van het databaseknooppunt is slechts een van de activiteiten waarvoor verbindingsmachtigingen voor het gastaccount met de msdb-database zijn vereist. Er kan een vergelijkbare fout optreden bij elke activiteit waarvoor minimaal 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 lijkt op het volgende, heeft de gastgebruiker de benodigde machtigingen.

grantee_name class class_desc major_id minor_id grantee_principal_id grantor_principal_id type permission_name staat beschr_staat
gast 0 DATABASE 0 0 2 1 CO VERBINDEN G GRANT

Als u een lege resultatenset ontvangt of als weigeren 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

Voer de volgende query uit in SQL Server Management Studio als lid van de vaste serverrol sysadmin om het probleem op te lossen:

USE msdb;

GRANT connect TO guest;

GO

Verwijzingen