none
Errore 17311 nel tentativo di esecuzione query con OPENDATASOURCE RRS feed

  • Domanda

  • L'esecuzione di query INSER INTO con istruzione OPENDATASOURCE causa un eccezione interna con conseguente arresto del servizio SQLServer.

    L'errore si verifica sia su versioni 2014 SP3 CU4 che 2016 SP2. Il s.o. è Win Server 2016.

    Riporto di seguito la sezione di errore salvata nel dump di Sql (ed. 2014):

    2021-06-26 02:35:08.68 spid51      Errore: 17311, gravità: 16, stato: 1.
    2021-06-26 02:35:08.68 spid51      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-06-26 02:35:08.68 spid51      Using 'dbghelp.dll' version '4.0.5'
    2021-06-26 02:35:08.76 spid51      **Dump thread - spid = 0, EC = 0x000000004B016D90
    2021-06-26 02:35:08.76 spid51      ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\LOG\SQLDump0155.txt
    2021-06-26 02:35:08.76 spid51      * *******************************************************************************
    2021-06-26 02:35:08.76 spid51      *
    2021-06-26 02:35:08.76 spid51      * BEGIN STACK DUMP:
    2021-06-26 02:35:08.76 spid51      *   06/26/21 02:35:08 spid 51
    2021-06-26 02:35:08.76 spid51      *
    2021-06-26 02:35:08.76 spid51      * ex_handle_except encountered exception 80000003 - Server terminating
    2021-06-26 02:35:08.76 spid51      *
    2021-06-26 02:35:08.76 spid51      * Input Buffer 510 bytes -
    2021-06-26 02:35:08.76 spid51      *             INSERT INTO Anagrafe (Id,CodCli,Descrizione,PartitaIva,Indiri
    2021-06-26 02:35:08.76 spid51      *  zzo,CAP,Localita,Prov,CodAli,Listino,Sconti,Note,Fido,FidoMax,Esposizion
    2021-06-26 02:35:08.76 spid51      *  eMax,Esposizione,MaxOrdinabile,Deleted,Aliquote_Id,Bloccato,Nuovo,Sogget
    2021-06-26 02:35:08.76 spid51      *  to,Nome,Cognome,Sesso,Telefono,Cellulare,CodiceFiscale,CodiceDestinatari
    2021-06-26 02:35:08.76 spid51      *  o,Privacy,CondizioniVendita) SELECT Id,CodCli,Descrizione,PartitaIva,Ind
    2021-06-26 02:35:08.76 spid51      *  irizzo,CAP,Localita,Prov,CodAli,Listino,Sconti,Note,Fido,FidoMax,Esposiz
    2021-06-26 02:35:08.76 spid51      *  ioneMax,Esposizione,MaxOrdinabile,Deleted,Aliquote_Id,Bloccato,Nuovo,Sog
    2021-06-26 02:35:08.76 spid51      *  getto,Nome,Cognome,Sesso,Telefono,Cellulare,CodiceFiscale,CodiceDestinat
    2021-06-26 02:35:08.76 spid51      *  ario,Privacy,CondizioniVendita FROM OPENDATASOURCE('SQLNCLI', 'Server=
    2021-06-26 02:35:08.76 spid51      *  AZIENDA.database.windows.net;Initial Catalog=VendoOnlineLON;Persist Sec
    2021-06-26 02:35:08.76 spid51      *  urity Info=False;User ID=***;Password=***;MultipleActiveRe
    2021-06-26 02:35:08.76 spid51      *  sultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Time
    2021-06-26 02:35:08.76 spid51      *  out=120;').VendoOnlineLON.dbo.Anagrafe WHERE CreatedAt > '24/06/2021 08:
    2021-06-26 02:35:08.76 spid51      *  52:32 +00:00'

    --------------------------------------------


    Di seguito riporto un altro dump di un errore con descrizione leggermente differente, causato sempre dalla stessa tipologia di query, verificatosi su un altro server (ed. 2016):

    2021-06-27 10:32:05.29 spid63      SqlDumpExceptionHandler: Process 63 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
    2021-06-27 10:32:05.29 spid63      * *******************************************************************************
    2021-06-27 10:32:05.29 spid63      *
    2021-06-27 10:32:05.29 spid63      * BEGIN STACK DUMP:
    2021-06-27 10:32:05.29 spid63      *   06/27/21 10:32:05 spid 63
    2021-06-27 10:32:05.29 spid63      *
    2021-06-27 10:32:05.29 spid63      *
    2021-06-27 10:32:05.29 spid63      *   Exception Address = 0000022AA229AEF8 Module(UNKNOWN+0000000000000000)
    2021-06-27 10:32:05.29 spid63      *   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
    2021-06-27 10:32:05.29 spid63      *   Access Violation occurred writing address 0000022AA229AEF8
    2021-06-27 10:32:05.29 spid63      * Input Buffer 510 bytes -
    2021-06-27 10:32:05.29 spid63      *             INSERT INTO Utenti (Id,Email,EmailConfirmed,FirstName,Passwor
    2021-06-27 10:32:05.29 spid63      *  dHash,SecurityStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,Lo
    2021-06-27 10:32:05.29 spid63      *  ckoutEndDateUtc,LockoutEnabled,AccessFailedCount,UserName,PasswordResetD
    2021-06-27 10:32:05.29 spid63      *  ate,ConfirmationCode,Anagrafe_Id,Deleted,Assegnazioni_Id) SELECT Id,Emai
    2021-06-27 10:32:05.29 spid63      *  l,EmailConfirmed,FirstName,PasswordHash,SecurityStamp,PhoneNumber,PhoneN
    2021-06-27 10:32:05.29 spid63      *  umberConfirmed,TwoFactorEnabled,LockoutEndDateUtc,LockoutEnabled,AccessF
    2021-06-27 10:32:05.29 spid63      *  ailedCount,UserName,PasswordResetDate,ConfirmationCode,Anagrafe_Id,Delet
    2021-06-27 10:32:05.29 spid63      *  ed,Assegnazioni_Id FROM OPENDATASOURCE('SQLNCLI', 'Server=AZIENDA2.database
    2021-06-27 10:32:05.29 spid63      *  .windows.net;Initial Catalog=VendoOnlineHI1;Persist Security Info=False;
    2021-06-27 10:32:05.29 spid63      *  User ID=***;Password=***;MultipleActiveResultSets=False;En
    2021-06-27 10:32:05.29 spid63      *  crypt=True;TrustServerCertificate=False;Connection Timeout=120;').VendoO
    2021-06-27 10:32:05.29 spid63      *  nlineHI1.dbo.Utenti WHERE CreatedAt > '26/06/2021 17:36:17 +02:00'

    --------------------------------------------

    Come si può notare dalla query, l'origine dati è un db su SQLAzure. Questa query viene eseguita automaticamente ogni 2 minuti e normalmente va a buon fine. L'eccezione si verifica sporadicamente, ogni circa 2/3 settimane. Il problema grave è però che causa l'arresto improvviso di SQLServer.


    Kronos

    mercoledì 30 giugno 2021 09:50

Risposte

  • Ciao amico,

    Ho avuto un problema simile a questo molto tempo fa e l'unica soluzione era un aggiornamento su Sql Server.
    All'epoca, una query molto complessa a volte faceva questo blocco nell'intero ambiente fino all'arresto dello stesso Sql Server.

    Era un BUG a causa di un TRIGGER sul tavolo.
    Ma fammi un dubbio. C'è un TRIGGER per questa tabella?

    Il tuo Sql Server 2014 SP3 CU4 è ben aggiornato.
    Ma c'è un aggiornamento più recente che potresti non avere ancora. Controlla il seguente link:

    KB4583462 - Description of the security update for SQL Server 2014 SP3 CU4: January 12, 2021


    Se questa risposta ti è stata d'aiuto, contrassegnala come utile in modo che qualcun altro con una domanda o un problema simile possa trovare una risposta o aiutarti più facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista di database - SQL Server e Oracle ]


    giovedì 1 luglio 2021 13:55

Tutte le risposte

  • Riesci a vedere qualche tipo di problema della macchina?
    Hai controllato se qualcosa è registrato nel registro di Windows?
    Potrebbe essere qualcosa legato alla Memoria e quindi potrebbe essere pericoloso nel medio lungo termine.

    Penso che sia importante chiedere aiuto a MS: https://support.microsoft.com/en-us/assistedsupportproducts. In genere, dispongono degli strumenti necessari per analizzare il file di dump. È necessario fornire loro il registro degli errori e i file di dump in modo che possano risolvere i problemi.

    Se questa risposta ti è stata d'aiuto, contrassegnala come utile in modo che qualcun altro con una domanda o un problema simile possa trovare una risposta o aiutarti più facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista di database - SQL Server e Oracle ]


    mercoledì 30 giugno 2021 12:49
  • Nel registro eventi di Windows compare l'evento indicato in oggetto, la cui descrizione era riportata nel messaggio, ossia 17311: 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)

    Per quanto riguarda la possibilità che sia dovuto alla memoria, non la credo plausibile, perché questo problema si è verificato su 4 server differenti. Piuttosto penso sia dovuto al tipo di query che, forse, viene eseguita in concorrenza con qualche altra operazione del server. Credo che comunque non sia accettabile che un server debba arrestarsi improvvisamente solo l'errore di elaborazione di una query.

    Ho già provato a contattare il supporto Microsoft, ma trattandosi di un problema riscontrato su edizioni Express, l'intervento non è incluso nel programma Partner. Mi hanno quindi suggerito di rivolgermi ai forum...


    Kronos

    mercoledì 30 giugno 2021 13:04
  • Ciao amico,

    Ho avuto un problema simile a questo molto tempo fa e l'unica soluzione era un aggiornamento su Sql Server.
    All'epoca, una query molto complessa a volte faceva questo blocco nell'intero ambiente fino all'arresto dello stesso Sql Server.

    Era un BUG a causa di un TRIGGER sul tavolo.
    Ma fammi un dubbio. C'è un TRIGGER per questa tabella?

    Il tuo Sql Server 2014 SP3 CU4 è ben aggiornato.
    Ma c'è un aggiornamento più recente che potresti non avere ancora. Controlla il seguente link:

    KB4583462 - Description of the security update for SQL Server 2014 SP3 CU4: January 12, 2021


    Se questa risposta ti è stata d'aiuto, contrassegnala come utile in modo che qualcun altro con una domanda o un problema simile possa trovare una risposta o aiutarti più facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista di database - SQL Server e Oracle ]


    giovedì 1 luglio 2021 13:55
  • Grazie della risposta.

    Si, sulla tabella c'è un trigger che aggiorna il campo UpdatedAt nelle operazioni di Update. Questa è la definizione del trigger:

    CREATE trigger [dbo].[UpdatedAt_Anagrafe] on [dbo].[Anagrafe] after update 
    as 
    begin   
    set nocount on;   
    update Anagrafe set UpdatedAt = CONVERT(DATETIMEOFFSET, SYSUTCDATETIME())   
    FROM INSERTED WHERE inserted.[Id] = [dbo].[Anagrafe].[Id]
    end

    Come si può vedere però ma questo trigger si attiva nell'update del record, mentre la query che genera l'errore è una INSERT INTO. Potrebbe comunque essere il trigger il problema?

    Ho verificato gli ultimi aggiornamenti disponibili, ma si tratta solo di 2 security updates, quindi non so se cambierà qualcosa dopo la loro installazione.



    Kronos

    venerdì 2 luglio 2021 07:12
  • Ciao ,

    Hai già eseguito un CHECKDB per convalidare la struttura del database?
    Fallo e torna da noi per favore.
    Potrebbe essere un problema con l'accesso a una posizione specifica e quindi il problema viene generato.
    per favore esegui:

    DBCC CHECKDB;    
    GO    

    Se questa risposta ti è stata d'aiuto, contrassegnala come utile in modo che qualcun altro con una domanda o un problema simile possa trovare una risposta o aiutarti più facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista di database - SQL Server e Oracle ]


    venerdì 2 luglio 2021 13:08
  • Ho eseguito il CHECKDB, e non sono trovati errori di allocazione o errori di coerenza nel db.

    Sembra quindi tutto regolare. Da una ulteriore analisi credo che il problema di verifichi su determinate tabelle che vengono aggiornate periodicamente in modo bidirezionale all'interno di un task di sincronizzazione. Ho provato a serializzare l'esecuzione delle query e sto monitorando la situazione per verificare se il problema si sussiste ancora. 


    Kronos

    mercoledì 7 luglio 2021 07:24
  • Ciao .

    Molto buona .
    Allora andiamo da questa parte.
    attendo il tuo ritorno.


    Se questa risposta ti è stata d'aiuto, contrassegnala come utile in modo che qualcun altro con una domanda o un problema simile possa trovare una risposta o aiutarti più facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista di database - SQL Server e Oracle ]


    mercoledì 7 luglio 2021 13:05
  • Dopo 2 settimane di monitoraggio della situazione, il problema non si verifica più. Posso quindi dire che sembra essere stato risolto serializzando l'esecuzione della query in oggetto. Grazie per avermi dato un indizio relativo al trigger sulla tabella, senza il quale probabilmente non sarei riuscito a risalire all'origine del problema.

    Kronos

    martedì 20 luglio 2021 07:18
  • Ciao amico,

    Grazie per il feedback.

    Felice che tu sia riuscito a risolvere.

    Se questa risposta ti è stata d'aiuto, contrassegnala come utile in modo che qualcun altro con una domanda o un problema simile possa trovare una risposta o aiutarti più facilmente. * Jefferson Clyton Pereira da Silva - [ MCSA | MCP | MCTS | MTA | Analista di database - SQL Server e Oracle ]


    mercoledì 21 luglio 2021 13:18