KB2938460 - ИСПРАВЛЕНО: Происходит нарушение прав доступа при попытке использовать datepart (weekday) в хранимой процедуре, скомпилированной машинным кодом в SQL Server 2014

Применяется к
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Проблема

Предположим, что вы используете Microsoft SQL Server 2014. При попытке использовать datepart (weekday) в хранимой процедуре, скомпилированной в машинном коде, происходит нарушение прав доступа и подключение завершается. Кроме того, вы получаете следующую ошибку:

Примечание

Возникла серьезная ошибка текущей команды. Результаты, если таковые имеются, должны быть отброшены.

Причина

Проблема возникает из-за дефекта в SQL Server 2014.
Использование datepart с аргументом char вводит неявное преобразование в datetimeoffset. Собственная хранимая процедура не поддерживает datetimeoffset.

Решение

После применения исправления в SQL Server внесет изменения, чтобы ввести новую логику для преобразования аргумента char в datetime2 для основной хранимой процедуры и datetimeoffset для обычной хранимой процедуры и свертывания констант.
Эта проблема была впервые исправлена в следующем накопительном пакете обновления SQL Server.

Накопительный пакет обновления 1 для SQL Server 2014 г. /en-us/help/2931693

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

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

      

Временное решение

Чтобы обойти проблему, явно преобразуйте в поддерживаемый тип datetime.

Состояние

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