#c# #sql-server
#c# #sql-сервер
Вопрос:
Служба SQL Server 2014 SP3 CU4 внезапно завершается с идентификаторами ошибок 17310 и 17311. Файл ошибок дампа показывает следующий стек:
Stack Dump being sent to C:Program FilesMicrosoft SQL ServerMSSQL12.SQLEXPRESSMSSQLLOGSQLDump0067.txt
SqlDumpExceptionHandler: Process 57 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
BEGIN STACK DUMP:
01/25/21 19:09:36 spid 57
Exception Address = 00000000D4AF1840 Module(UNKNOWN 0000000000000000)
Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION
Access Violation occurred writing address 00000000D4AF1840
Input Buffer 510 bytes -
INSERT INTO IntestazioneDoc (Id,TipoDoc,NumDoc,Agente,CodCli,
DataDoc,DataEvasione,Acconto,Note,Sc1,Sc2,Sc3,DocAgg,Stato,DetailsCount,
Anagrafe_Id,CreatedAt,UpdatedAt,Deleted) SELECT Id,TipoDoc,NumDoc,Agente
,CodCli,DataDoc,DataEvasione,Acconto,Note,Sc1,Sc2,Sc3,DocAgg,Stato,Detai
lsCount,Anagrafe_Id,CreatedAt,UpdatedAt,Deleted FROM OPENDATASOURCE('SQL
NCLI', 'Server=***').myDb.dbo.IntestazioneDoc WHERE CreatedAt > '25/01/2021 11:39:37 00:00'
Кроме того, здесь есть еще одна ошибка:
2021-02-28 22:50:26.86 spid58 Errore: 17311, gravità: 16, stato: 1.
2021-02-28 22:50:26.86 spid58 SQL Server is terminating because of fatal exception 80000003. This error may be caused by an unhandled Win32 or C exception, or by an access violation encountered during exception handling. Check the SQL error log for any related stack dumps or messages. This exception forces SQL Server to shutdown. To recover from this error, restart the server (unless SQLAgent is configured to auto restart).
2021-02-28 22:50:26.89 spid58 **Dump thread - spid = 0, EC = 0x0000000038AD0D90
2021-02-28 22:50:26.91 spid58 ***Stack Dump being sent to C:Program FilesMicrosoft SQL ServerMSSQL12.SQLEXPRESSMSSQLLOGSQLDump0094.txt
2021-02-28 22:50:26.91 spid58 * *******************************************************************************
2021-02-28 22:50:26.91 spid58 *
2021-02-28 22:50:26.91 spid58 * BEGIN STACK DUMP:
2021-02-28 22:50:26.91 spid58 * 02/28/21 22:50:26 spid 58
2021-02-28 22:50:26.91 spid58 *
2021-02-28 22:50:26.91 spid58 * ex_handle_except encountered exception 80000003 - Server terminating
2021-02-28 22:50:26.91 spid58 *
2021-02-28 22:50:26.91 spid58 * Input Buffer 510 bytes -
2021-02-28 22:50:26.91 spid58 * INSERT INTO Anagrafe (Id,CodCli,Descrizione,PartitaIva,Indiri
2021-02-28 22:50:26.91 spid58 * zzo,CAP,Localita,Prov,CodAli,Listino,Sconti,Note,Fido,FidoMax,Esposizion
2021-02-28 22:50:26.91 spid58 * eMax,Esposizione,MaxOrdinabile,CreatedAt,UpdatedAt,Deleted,Aliquote_Id,B
2021-02-28 22:50:26.91 spid58 * loccato,Nuovo,Soggetto,Nome,Cognome,Sesso,Telefono,Cellulare,CodiceFisca
2021-02-28 22:50:26.91 spid58 * le,CodiceDestinatario,Privacy,CondizioniVendita) SELECT Id,CodCli,Descri
2021-02-28 22:50:26.91 spid58 * zione,PartitaIva,Indirizzo,CAP,Localita,Prov,CodAli,Listino,Sconti,Note,
2021-02-28 22:50:26.91 spid58 * Fido,FidoMax,EsposizioneMax,Esposizione,MaxOrdinabile,CreatedAt,UpdatedA
2021-02-28 22:50:26.91 spid58 * t,Deleted,Aliquote_Id,Bloccato,Nuovo,Soggetto,Nome,Cognome,Sesso,Telefon
2021-02-28 22:50:26.91 spid58 * o,Cellulare,CodiceFiscale,CodiceDestinatario,Privacy,CondizioniVendita F
2021-02-28 22:50:26.91 spid58 * ROM OPENDATASOURCE('SQLNCLI', 'Server=***').myDb.dbo.An
2021-02-28 22:50:26.91 spid58 * agrafe WHERE CreatedAt > '25/02/2021 15:18:33 00:00'
Есть ли что-то, что я должен сделать в своей программе, чтобы исправить эти проблемы?
Комментарии:
1. По какой-либо конкретной причине вы используете версию, не поддержанную?
2. Вы проверяли файлы журналов SQL Server?
3. @jdweng: да, я получил сообщения об ошибках из файлов журнала
4. Я бы запустил диспетчер задач на компьютере SQL Server во время работы и проверил использование памяти. Смотрите : support.microsoft.com/en-us/topic /… и social.technet.microsoft.com/Forums/azure/en-US /…
5. Сервер использует около 30% общей памяти, так что я думаю, что это не проблема с памятью. Но, возможно, проблема вызвана связанными серверами (запрос ссылается на Azure с помощью инструкции OpenDataSource). Но я не знаю почему.
Ответ №1:
После долгих исследований и тестирования я обнаружил, что проблема была вызвана 2 асинхронными процессами, выполняющими вышеуказанный запрос одновременно. Поскольку в таблицах, для которых выполнялся запрос, был триггер, его выполнение вызвало исключение, которое затем остановило службу SQLServer. Я решил это путем сериализации выполнения запроса.