Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie verfügen über eine SQL CLR-Funktion in SQL Server 2016 und 2017.
-
Die CLR-Funktion ruft Transact-SQL-Anweisungen über Identitätswechselaufrufe auf, z. B. durch Aufrufen der EXECUTE AS-Anweisung.
In diesem Szenario schlägt die Ausführung fehl, und Sie erhalten die folgende Fehlermeldung:
Msg 6522, Level 16, State 1, Procedure PrcedureName, Line 0 [Batch Start Line LineNumber]
Bei der Ausführung der benutzerdefinierten Routine oder des Aggregats "ProcedureName" ist ein .NET Framework Fehler aufgetreten:
System.Data.SqlClient.SqlException: Der Serverprinzipal "LoginName" kann unter dem aktuellen Sicherheitskontext nicht auf die Datenbank "DatabaseName" zugreifen.
Lösung
Dieser Fix ist im kumulativen Update 1 für SQL Server 2017 enthalten.
Service Pack-Informationen für SQL Server 2016
Dieses Problem wurde im folgenden Service Pack für SQL Server behoben:
Informationen zu SQL Server 2017-Builds
Jeder neue Build für SQL Server 2017 enthält alle Hotfixes und Sicherheitsfixes aus dem vorherigen Build. Es wird empfohlen, den neuesten Build für SQL Server 2017 zu installieren.
Service Packs sind kumulativ. Jedes neue Service Pack enthält neben neuen Updates alle Updates früherer Service Packs. Es wird empfohlen, das neueste Service Pack und das neueste kumulative Update für dieses Service Pack anzuwenden. Sie müssen also keine älteren Versionen eines Service Packs installieren, bevor Sie das neueste Service Pack installieren. Verwenden Sie Tabelle 1 im folgenden Artikel, um weitere Informationen zum neuesten Service Pack und zum neuesten kumulativen Update zu finden.
Ermitteln der Version, Edition und Updateebene von SQL Server und der zugehörigen Komponenten
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Informationsquellen
Erfahren Sie mehr über die Terminologie , die Microsoft zum Beschreiben von Softwareupdates verwendet.