Проблемы
Рассмотрим следующий сценарий.
-
У вас есть функция SQL CLR в SQL Server 2016 и 2017 годах.
-
Функция CLR вызывает инструкции Transact-SQL с помощью вызовов олицетворения, например путем вызова инструкции EXECUTE AS.
В этом сценарии выполнение завершается сбоем, и появляется следующее сообщение об ошибке:
Msg 6522, Level 16, State 1, Procedure PrcedureName, Line 0 [Batch Start LineNumber]
Во время выполнения определяемой пользователем подпрограммы или агрегата "ProcedureName" произошла ошибка платформа .NET Framework:
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 и его компонентов
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Сведения о терминологии , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.