Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Sintomi

Considerare lo scenario descritto di seguito:

  • Si dispone di un database di Microsoft SQL Server 2016 che utilizza la funzione di archivio dati di Query.

  • Si dispone di una stored procedure che effettua una chiamata a un'altra stored procedure utilizzando "INSERT... Sintassi EXEC".

  • Archivio dati della Query viene eseguito periodicamente pulizia automatica che aumenta la dimensione per la dimensione massima configurata e archivio dati della Query cambia lo stato da READ_WRITE a READ_ONLY.

In questo scenario, periodicamente padre stored procedura esecuzione ha esito negativo e viene visualizzato un messaggio di errore analogo al seguente:

MSG 556, livello 16, stato 2, riga 5INSERT EXEC della stored procedure modificato lo schema della tabella di destinazione non riuscita..

Causa

Quando l'archivio dati di Query viene eseguita pulizia automatica, questa operazione svuota piani di archivio dati di Query. La query viene rilevata un'operazione di ricompilazione perché il piano è manca dall'archivio dati di Query, mentre il piano è ancora presente nella cache delle procedure. Per impostazione predefinita, quando si verifica l'operazione di ricompilazione, SQL Server genera l'errore 556 a impediscono l'esecuzione della procedura di figlio, che potrebbe comportare risultati non corretti restituiti duplicato.

Soluzione alternativa

Per ovviare a questo problema, attenersi alla seguente procedura:

  1. Aumentare la dimensione dell'archivio dati di Query. Ciò consente di ridurre la frequenza o probabilità dell'archivio dati della Query disattivando il piano e immissione READ_ONLY in modalità di funzionamento.

  2. Aggiungere al codice per intercettare l'errore 556 di gestione degli errori e inviare nuovamente la query INSERT EXEC.

  3. Cancellare la cache delle procedure quando l'archivio dati di Query ritorna allo stato READ_WRITE da READ_ONLY.

Ulteriori informazioni

A causa delle modifiche apportate all'archivio dati di Query in Microsoft SQL Server 2017, questo problema non si verifica in SQL Server 2017. Questo problema non risolto in SQL Server 2016.

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×