Симптоми
Обмислете следния сценарий:
-
Имате SQL CLR функция в SQL Server 2016 и 2017.
-
Функцията CLR извиква Transact-SQL команди чрез повиквания за въплъщаване, например чрез извикване на командата EXECUTE AS.
В този случай изпълнението е неуспешно и получавате следното съобщение за грешка:
Msg 6522, ниво 16 състояние 1, процедура PrcedureName, ред 0 [Batch Start LineNumber]
Възникна .NET Framework (платформа) грешка по време на изпълнение на дефинирана от потребителя програма или агрегиране на "ProcedureName":
System.Data.SqlClient.SqlException: субектът на сървъра "LoginName" не може да получи достъп до базата данни "DatabaseName" под текущия контекст на защитата.
Решение
Тази корекция е включена в сборна актуализация 1 за SQL Server 2017.
Информация за сервизни пакети за SQL Server 2016
Този проблем е коригиран в следния сервизен пакет за SQL Server:
За компилациите за SQL Server 2017 г.
Всяка нова компилация за SQL Server 2017 съдържа всички горещи поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за SQL Server 2017.
Сервизните пакети са кумулативни. Всеки нов сервизен пакет съдържа всички корекции, които са в предишни сервизни пакети, заедно с всички нови корекции. Нашата препоръка е да приложите най-новия сервизен пакет и най-новата кумулативна актуализация за този сервизен пакет. Не е необходимо да инсталирате предишен сервизен пакет, преди да инсталирате най-новия сервизен пакет. Използвайте таблица 1 в следната статия за намиране на повече информация относно най-новия сервизен пакет и най-новата кумулативна актуализация.
Как да определите нивото на версията, изданието и актуализацията на SQL Server и неговите компоненти
Статут
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".
Препратки
Научете повече за терминологията , която Microsoft използва за описване на актуализациите на софтуера.