Проблемы
Предположим, что у вас есть таблица с триггером DML в Microsoft SQL Server 2008 R2, SQL Server 2012 или SQL Server 2014 и в этом триггере вы присоединяете вставленную или удаленную таблицу с другими таблицами. При выполнении инструкции DML в этой таблице может возникнуть нарушение прав доступа во время компиляции триггера, и появляется следующее сообщение об ошибке:
При текущей команде возникла серьезная ошибка. Результаты, если таковые имеются, должны быть удалены.
Кроме того, в журнале ошибок SQL Server регистрируются следующие ошибки:
<Date><Time> SPID # * * * за<дается дамп стека>* * * \SQLDumpxxx.txt<Date><время> SPID # SqlDumpExceptionHandler: процесс # генерирует неустранимое исключение c0000005 EXCEPTION_ACCESS_VIOLATION. Сервер SQL Server завершает этот процесс.<дата><время> SPID # * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *<даты><время> SPID # *<Дата><время><1 spid # * начальный дамп стек><2 дата><время><5 SPID # * ><6 Дата><время><9 SPID #><0 Дата>< время><3 SPID # *><4 Дата><время><7 SPID # *><8 дата ><> Дата><время> SPID # * код исключения = C0000005 EXCEPTION_ACCESS_VIOLATION<Дата><время> 510.) ошибка при записи адреса 0000000000000000<дата><время> SPID # * вход. буфер байт-<Дата><время> SPID # * SQL_query_code
Решение
Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Накопительное обновление 1 для SQL Server 2012 с пакетом обновления 2 (SP2) /en-us/help/2976982
Накопительное обновление 2 для SQL Server 2014 /en-us/help/2967546
Накопительное обновление 10 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2954099
Накопительное обновление 12 для SQL Server 2008 R2 с пакетом обновления 2 (SP2) /en-us/help/2938478
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Обходное решение
Чтобы обойти эту ошибку, не используйте вставленную или удаленную таблицу непосредственно в запросе, присоединяющем его к другим таблицам, а затем кэшировать его в временной таблице и используя временную таблицу в запросе.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".