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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor