Sintomi
Supponiamo di avere un database abilitato per FILESTREAM in un'istanza di Microsoft SQL Server. Quando si avvia una transazione e si usa l'API .NET SqlFileStream per aprire un file FILESTREAM, l'attività potrebbe non riuscire e generare un'eccezione a causa di fattori esterni.
Se si apre di nuovo il file usando SqlFileStream all'interno della stessa transazione e commit, è possibile che vengano visualizzati messaggi di errore interni simili ai seguenti:
Data/ora, SPID, sconosciuto, errore: 5571<c/> gravità: 23<c/> stato: 3.Data/ora, SPID, sconosciuto, errore FILESTREAM interno: Impossibile accedere alla tabella di Garbage Collection.
Se si esegue DBCC CHECKTABLE (' sys.filestream_tombstone_2073058421'), è possibile che venga visualizzato il messaggio di errore seguente:
Msg 8951, livello 16, stato 1, riga lineNumber
Errore di tabella: tabella DBCC CHECKTABLE (' sys.filestream_tombstone_2073058421') (ID NumeroID del). La riga di dati non ha una riga di indice corrispondente nell'indice ' FSTSNCIdx ' (ID NumeroID del). Possibili chiavi mancanti o non valide per la corrispondenza delle righe di indice:
Risoluzione
La correzione per questo problema è inclusa negli aggiornamenti seguenti per SQL Server:
Aggiornamento cumulativo 13 per SQL Server 2017
Aggiornamento cumulativo 1 per SQL Server 2014 Service Pack 3
Aggiornamento cumulativo 15 per SQL Server 2014 Service Pack 2
Informazioni sulle build di SQL Server
Ogni nuova build per SQL Server contiene tutti gli aggiornamenti rapidi e le correzioni di sicurezza presenti nella build precedente. È consigliabile installare la build più recente per la versione di SQL Server:
Soluzione alternativa
Per risolvere il problema, ricostruire l'indice del database usando il comando DBCC CHECKTABLE .
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Riferimenti
Informazioni sulla terminologia standard utilizzata da Microsoft per descrivere gli aggiornamenti software.