Symptomen
Neem het volgende scenario:
-
U hebt een SQL CLR-functie in SQL Server 2016 en 2017.
-
De functie CLR roept Transact-SQL-instructies aan via imitatie-aanroepen, bijvoorbeeld door de EXECUTE AS-instructie aan te roepen.
In dit scenario mislukt de uitvoering en ontvangt u het volgende foutbericht:
Msg 6522, Level 16, State 1, Procedure PrcedureName, Regel 0 [Batch Start LineNumber]
Er is een .NET Framework fout opgetreden tijdens het uitvoeren van door de gebruiker gedefinieerde routine of aggregaat 'ProcedureName':
System.Data.SqlClient.SqlException: de serverprincipal 'LoginName' heeft geen toegang tot de database 'DatabaseName' onder de huidige beveiligingscontext.
Oplossing
Deze oplossing is opgenomen in cumulatieve update 1 voor SQL Server 2017.
Informatie over servicepacks voor SQL Server 2016
Dit probleem is opgelost in het volgende servicepack voor SQL Server:
Over SQL Server 2017-builds
Elke nieuwe build voor SQL Server 2017 bevat alle hotfixes en beveiligingspatches uit de vorige build. U wordt aangeraden de nieuwste build voor SQL Server 2017 te installeren.
Servicepacks zijn cumulatief. Elk nieuw servicepack bevat alle correcties uit eerdere servicepacks, samen met eventuele nieuwe oplossingen. We raden u aan het meest recente servicepack en de meest recente cumulatieve update voor dat servicepack toe te passen. U hoeft geen eerder servicepack te installeren voordat u het meest recente servicepack installeert. Gebruik tabel 1 in het volgende artikel voor meer informatie over het nieuwste servicepack en de meest recente cumulatieve update.
Het versie-, editie- en updateniveau van SQL Server en de bijbehorende onderdelen bepalen
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.
Verwijzingen
Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.