Errori del sistema operativo 1450 e 665 vengono riportati i file di dati del database

Sintomi

In un computer SQL Server, si supponga di eseguire una delle seguenti operazioni:

  • Si crea uno snapshot di database in un database di grandi dimensioni. Dopo questa operazione è di eseguire numerose operazioni di modifica di dati o le operazioni di manutenzione nel database di origine.

  • Si crea uno snapshot di database in un database mirror

  • Si esegue la famiglia di DBCC CHECKDB di comandi per controllare la coerenza di un database di grandi dimensioni e si esegue anche un numero elevato di modifiche ai dati presenti nel database.

In questo scenario, notate i seguenti errori segnalati nel log degli errori di SQL Server in base l'ambiente in cui è in esecuzione SQL Server.

Windows Server 2003

Il sistema operativo ha restituito errore 1450 (esistono risorse di sistema insufficienti per completare il servizio richiesto.) per SQL Server durante la scrittura di offset nel file 0x00002a3ef96000 con handle 0x0000000000000D5C. In genere si tratta di una condizione temporanea e di SQL Server continuerà a tentare l'operazione. Se il problema persiste, quindi immediato è necessario eseguire l'azione per correggerlo.

Windows Server 2008, Windows Vista e versioni successive dei sistemi operativi server e client

Il sistema operativo ha restituito errore 665 (l'operazione richiesta non essere completata a causa di un limite del file system) di SQL Server durante un'operazione di scrittura all'offset 0x00002a3ef96000 nel file 'Sam.mdf:MSSQL_DBCC18'

Oltre a questi errori, si potrebbero notare anche gli errori di Timeout di Latch come illustrato di seguito:

  • Timeout durante l'attesa di latch: classe 'DBCC_MULTIOBJECT_SCANNER', id 000000002C61DF40, digitare 4, l'attività 0x00000000038089B8: 16, waittime 600, flag 0x1a, proprietario attività 0x0000000006A09828. Continuare ad attendere.

  • Timeout durante l'attesa di latch: classe 'ACCESS_METHODS_HOBT_COUNT', id 000000002C61DF40, digitare 4, l'attività 0x00000000038089B8: 16, waittime 600, flag 0x1a, proprietario attività 0x0000000006A09828. Continuare ad attendere.

Inoltre, si potrà notare anche il blocco quando si visualizzano varie viste a gestione dinamica (DMV), come sys.dm_exec_requests, sys.dm_os_waiting_tasks, ecc.

Causa

Questo problema si verifica se un numero elevato di istanze ATTRIBUTE_LIST_ENTRY è necessari per mantenere un file molto frammentato in NFTS. Questo comportamento è descritto nel seguente articolo della Knowledge Base:

  • 967351  un file molto frammentato in un volume NTFS non può crescere oltre una certa dimensione

I file sparsi creati da SQL Server per gli snapshot di database possono diventare frammentati a questi livelli quando si verificano grandi quantità di modifiche apportate ai dati per la durata di questi file di snapshot.

Per uno sfondo completo di come il motore di SQL Server utilizza file sparse NTFS e flussi di dati alternativi, vedere i seguenti collegamenti:

Soluzione

  1. Suddividere il database di grandi dimensioni in file più piccoli. Ad esempio, se si dispone di un file di dati di 8 TB è possibile suddividerla in file di dati di 1 TB otto. Alto livello sono i passaggi per eseguire questa operazione:

    1. Aggiungere i nuovi file di 1 TB 7 allo stesso gruppo di file.

    2. Ricreare gli indici cluster delle tabelle esistenti e questo verrà distribuiti automaticamente i dati di ciascuna tabella tra 8 file. Se una tabella non dispone di un indice cluster, quindi crearne uno e quindi rilasciarlo per ottenere lo stesso.

    3. Riduzione dell'originale 8 TB di file verso il basso, questa informazioni circa 12-15% è completo.

  2. Si consideri l'utilizzo di un riferimento che non hanno la stessa ATTRIBUTE_LIST_ENTRY limita che NTFS presenta. Sarà necessario riformattare il volume utilizzando (Refs).

  3. Prendere in considerazione la deframmentazione del volume in cui si trovano i file di database. Per ulteriori informazioni, vedere Errore del sistema operativo (665 – limite del File System) non solo per DBCC più.

  4. Applicare la correzione di Windows nell'articolo KB 967351 e quindi formattare il volume utilizzando l'opzione /L per ottenere grandi FRS.

  5. 3029977 : Correzione Errore del sistema operativo 665 quando si esegue il comando DBCC CHECKDB per database che contiene l'indice di columnstore nel 2014 di SQL Server

  6. Ridurre la durata dei comandi DBCC CHECK utilizzando i seguenti miglioramenti di prestazioni e di conseguenza, evitare gli 665 errori:

    • 2634571miglioramenti per il comando DBCC CHECKDB potrebbe migliorare le prestazioni quando si utilizza l'opzione PHYSICAL_ONLYFlag di traccia attiva - T2562 e - T2549

    • 945770 FIX: istruzione di DBCC CHECKDB richiede più tempo per l'esecuzione di attivare trace flag - T2566

    • 3029825 FIX: DBCC CHECKDB richiedere più tempo per l'esecuzione quando sono coinvolti gli UDT CLR SQL

  7. Windows Server 2008i clienti devono applicare la seguente correzione:

    • 957065  messaggio di errore del driver NTFS. sys quando alcune applicazioni aggiornano file molto grandi in Windows Server 2008 o in sistemi Windows Vista: "0xc0000427 STATUS_FILE_SYSTEM_LIMITATION"

  8. I clienti di SQL Server 2005 o SQL Server 2008 consigliabile applicare le seguenti correzioni come applicabile alla versione che sono in esecuzione:

    • 961123  FIX: servizio di SQL Server si interrompe quando si esegue uno dei comandi DBCC CHECK su un database di SQL Server 2005 o quando si crea uno snapshot di database per un database di SQL Server 2005

    • 967164  FIX: servizio di SQL Server si blocca e viene visualizzato l'errore 1450 quando si crea uno snapshot di database o eseguita un'istruzione DBCC CHECK su un database in SQL Server 2005 e SQL Server 2008

    • 967470  FIX: messaggio di errore quando si esegue un aggiornamento o un'operazione di eliminazione di una tabella che non dispone di un indice cluster creato in SQL Server 2005 e SQL Server 2008: "il sistema operativo ha restituito l'errore 1450"

In determinate condizioni, è comunque possono verificarsi gli errori di cui sopra anche dopo aver applicato queste correzioni. In questo scenario, è possibile valutare alcune delle soluzioni alternative descritte nel post di blog seguenti:

Per ulteriori informazioni, vedere le seguenti risorse di Microsoft:

Errore del sistema operativo (665 limite del File System) non solo per DBCC più

 

File sparse supportati su NTFS e riferimenti

Comportamento di DBCC CHECKDB quando il database di SQL Server si trova su un volume di rif 

 

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?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×