KB4046918 - ИСПРАВЛЕНО: сбой выполнения, когда функция SQL CLR вызывает инструкции Transact-SQL посредством вызовов олицетворения в SQL Server 2016 и 2017

Применяется к
SQL Server 2017 on Windows (all editions) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use)

Проблема

Рассмотрим следующий сценарий.

  • У вас есть функция SQL CLR в SQL Server 2016 и 2017.
  • Функция CLR вызывает операторы Transact-SQL с помощью вызовов олицетворения, например путем вызова оператора EXECUTE AS.

В этом случае происходит сбой выполнения, и появляется следующее сообщение об ошибке:

Примечание

  • MSG 6522, уровень 16, состояние 1, Procedure PrcedureName, строка 0 [ Номер строки начала пакета]
  • Произошла ошибка платформы .NET Framework во время выполнения пользовательской процедуры или агрегата "ProcedureName":
  • System.Data.SqlClient.SqlException: субъект сервера "LoginName" не может получить доступ к базе данных "DatabaseName" в текущем контексте безопасности.

Решение

Это исправление включено в накопительный пакет обновления 1 для SQL Server 2017.

Сведения о пакете обновления для SQL Server 2016

Эта проблема устранена в следующем пакете обновления для SQL Server:

Пакет обновления 2 для SQL Server 2016

Сведения о сборках SQL Server 2017

Каждая новая сборка SQL Server 2017 содержит все исправления и исправления безопасности, которые были в предыдущей сборке. Рекомендуется установить последнюю сборку SQL Server 2017.

Сведения о пакетах обновления для SQL Server

Пакеты обновления суммируются. Каждый новый пакет обновления содержит все исправления, которые были в предыдущих пакетах обновления, а также все новые исправления. Мы рекомендуем применять последний пакет обновления и последний накопительный пакет обновления для этого пакета обновления. Перед установкой последнего пакета обновления устанавливать предыдущий пакет обновления не требуется. Дополнительные сведения о последнем пакете обновления и последнем накопительном пакете обновления см. в таблице 1 в следующей статье.

Определение версии, выпуска и уровня обновления SQL Server и его компонентов

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.