Symptômes
Prenons l’exemple du scénario suivant :
-
Vous disposez d’une fonction SQL CLR dans SQL Server 2016 et 2017.
-
La fonction CLR appelle des instructions Transact-SQL par le biais d’appels d’emprunt d’identité, par exemple en appelant l’instruction EXECUTE AS.
Dans ce scénario, l’exécution échoue et vous recevez le message d’erreur suivant :
Msg 6522, Level 16, State 1, Procedure PrcedureName, Line 0 [Batch Start Line LineNumber]
Une erreur .NET Framework s’est produite lors de l’exécution de la routine définie par l’utilisateur ou de l’agrégat « ProcedureName » :
System.Data.SqlClient.SqlException : le principal du serveur « LoginName » n’est pas en mesure d’accéder à la base de données « DatabaseName » dans le contexte de sécurité actuel.
Résolution
Ce correctif est inclus dans la mise à jour cumulative 1 pour SQL Server 2017.
Informations sur le Service Pack pour SQL Server 2016
Ce problème est résolu dans le Service Pack suivant pour SQL Server :
À propos des builds SQL Server 2017
Chaque nouvelle build pour SQL Server 2017 contient tous les correctifs logiciels et correctifs de sécurité qui se trouvaient dans la build précédente. Nous vous recommandons d’installer la dernière build pour SQL Server 2017.
Les Service Packs sont cumulatifs. Chaque nouvelle version contient tous les correctifs fournis dans les Service Packs précédents et tous les nouveaux correctifs. Nous vous recommandons d’appliquer le dernier Service Pack et la dernière mise à jour cumulative pour ce Service Pack. Il n'est donc pas nécessaire d'installer la version antérieure d'un Service Pack avant d'installer la dernière version disponible. Utilisez le tableau 1 de l’article suivant pour obtenir plus d’informations sur le dernier Service Pack et la dernière mise à jour cumulative.
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Découvrez la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.