Descrizione del supporto per i file di database di rete in SQL Server

Questo articolo descrive il supporto per i file di database di rete in SQL Server e come configurare SQL Server per archiviare un database in un server di rete o in un server di archiviazione NAS.

Versione originale del prodotto: SQL Server
Numero KB originale: 304261

Riepilogo

Microsoft consiglia in genere di usare un disco SAN (Storage Area Network) o collegato localmente per l'archiviazione dei file di database microsoft SQL Server perché questa configurazione ottimizza le prestazioni e l'affidabilità SQL Server. Per impostazione predefinita, l'uso di file di database di rete archiviati in un server di rete o in un server NAS (Network Attached Storage) non è abilitato per SQL Server.

È tuttavia possibile configurare SQL Server per archiviare un database in un server di rete o in un server NAS. I server usati a questo scopo devono soddisfare i requisiti di SQL Server per l'ordinamento di scrittura dei dati e le garanzie write-through. Questi sono descritti in dettaglio nella sezione Altre informazioni .

Le condizioni seguenti descrivono l'uso di file di database di rete archiviati in un server di rete o in un server NAS:

  • Questo uso è abilitato per impostazione predefinita in Microsoft SQL Server 2008 R2 e versioni successive.

  • Questo uso richiede che il flag di traccia di avvio -T1807 funzioni in Microsoft SQL Server 2008 e versioni precedenti. A partire da SQL Server 2012, il flag di traccia non è più necessario. Per altre informazioni su come abilitare i flag di traccia di avvio, vedere Opzioni di avvio del servizio Motore di database.

Dispositivi qualificati di Windows Hardware Quality Lab (WHQL)

I server Microsoft Windows e i server di rete o i server di archiviazione NAS qualificati per Windows Hardware Quality Lab (WHQL) soddisfano automaticamente l'ordine di scrittura dei dati e le garanzie di scrittura-through necessarie per supportare un dispositivo di archiviazione SQL Server. Microsoft supporta sia i problemi relativi all'applicazione che all'archiviazione in queste configurazioni.

Nota

Per essere supportata da SQL Server, la soluzione di archiviazione NAS deve soddisfare anche tutti i requisiti elencati nel documento di download: SQL Server requisiti del programma di affidabilità I/O.

Altri dispositivi

Se si usa un dispositivo di archiviazione non qualificato WHQL con SQL Server che supporta le garanzie di I/O per l'uso del database transazionale descritte in questo articolo, Microsoft fornirà il supporto completo per le applicazioni basate su SQL Server e SQL Server. Tuttavia, i problemi con o causati dal dispositivo o dal relativo sottosistema di archiviazione verranno indirizzati al produttore del dispositivo. Se si usa un dispositivo di archiviazione non qualificato WHQL che non supporta le garanzie di I/O per l'uso del database transazionale descritte in questo articolo, Microsoft non può fornire supporto per applicazioni basate su SQL Server o SQL Server. Per determinare se il dispositivo di archiviazione non qualificato WHQL supporta le garanzie di I/O per l'uso del database transazionale descritte in questo articolo o progettate per l'uso nel database, rivolgersi al fornitore del dispositivo. Contattare inoltre il fornitore del dispositivo per verificare di aver distribuito e configurato correttamente il dispositivo per l'uso del database transazionale.

Ulteriori informazioni

Per impostazione predefinita, in SQL Server 2008 e versioni precedenti non è possibile creare un database SQL Server in una condivisione file di rete. Qualsiasi tentativo di creare un file di database in un percorso di rete mappato o UNC genera uno dei messaggi di errore seguenti:

  • Messaggio di errore 1

    5105 "Errore di attivazione del dispositivo"

  • Messaggio di errore 2

    5110 "Il file 'file_name' si trova in un dispositivo di rete non supportato per i file di database."

Questo comportamento è previsto. Il flag di traccia 1807 ignora il controllo e consente di configurare SQL Server con file di database basati sulla rete. SQL Server e la maggior parte degli altri sistemi di database aziendali, usare un log delle transazioni e la logica di ripristino associata per mantenere la coerenza del database transazionale in caso di errore di sistema o arresto non gestito. Questi protocolli di ripristino si basano sulla possibilità di scrivere direttamente nel supporto del disco in modo che quando una richiesta di scrittura di input/output (I/O) del sistema operativo torna al gestore del database, il sistema di ripristino può essere sicuro che la scrittura sia completa o che il completamento della scrittura possa essere garantito. Qualsiasi errore da parte di qualsiasi componente software o hardware per rispettare questo protocollo può causare una perdita di dati parziale o totale o un danneggiamento in caso di errore del sistema. Per altre informazioni su questi aspetti dei protocolli di registrazione e ripristino in SQL Server, vedere Descrizione degli algoritmi di registrazione e archiviazione dei dati che estendono l'affidabilità dei dati in SQL Server.

Microsoft non supporta SQL Server file di database in rete in server NAS o di archiviazione di rete che non soddisfano questi requisiti di scrittura e ordine di scrittura.

A causa dei rischi di errori di rete che compromettano l'integrità del database, insieme alle possibili implicazioni sulle prestazioni che possono derivare dall'uso di condivisioni file di rete per archiviare i database, Microsoft consiglia di archiviare i file di database nei sottosistemi del disco locale o nelle reti di archiviazione (SAN).

Un sistema NAS (Network Attached Storage) è un sistema di archiviazione basato su file a cui i client si collegano tramite il reindirizzatore di rete usando un protocollo di rete (ad esempio TCP/IP). Per impostazione predefinita, se l'accesso a una risorsa disco richiede il mapping di una condivisione o se la risorsa disco viene visualizzata come server remoto tramite un percorso UNC (ad esempio, \NomeServer\NomeCondividi) nella rete, il sistema di archiviazione su disco non è supportato come percorso per i database SQL Server.

Problemi di prestazioni

SQL Server, come altri sistemi di database aziendali, possono caricare un carico elevato in un sottosistema di I/O. Nella maggior parte delle applicazioni di database di grandi dimensioni, la configurazione e l'ottimizzazione dell'I/O fisico svolgono un ruolo significativo nelle prestazioni complessive del sistema. Esistono tre fattori principali per le prestazioni di I/O da considerare:

  • Larghezza di banda di I/O: larghezza di banda aggregata, in genere misurata in megabyte al secondo che può essere mantenuta a un dispositivo di database.
  • Latenza di I/O: la latenza, in genere misurata in millisecondi, tra una richiesta di I/O da parte del sistema di database e il punto in cui viene completata la richiesta di I/O.
  • Costo CPU: il costo della CPU host, in genere misurato in microsecondi della CPU, per il completamento di un singolo I/O da parte del sistema di database.

Uno di questi fattori di I/O può diventare un collo di bottiglia ed è necessario considerare tutti questi fattori quando si progetta un sistema di I/O per un'applicazione di database.

Nella sua forma più semplice, una soluzione NAS usa uno stack software del reindirizzatore di rete standard, una scheda di interfaccia di rete standard e componenti Ethernet standard. Lo svantaggio di questa configurazione è che tutto l'I/O dei file viene elaborato tramite lo stack di rete ed è soggetto alle limitazioni di larghezza di banda della rete stessa. Ciò può creare problemi di prestazioni e affidabilità dei dati, soprattutto nei programmi che richiedono livelli elevati di I/O di file, ad esempio SQL Server. In alcune configurazioni NAS testate da Microsoft, la velocità effettiva di I/O era un terzo (1/3) di una soluzione di archiviazione collegata direttamente nello stesso server. In questa stessa configurazione, il costo della CPU per completare un I/O tramite il dispositivo NAS è stato il doppio di quello di un I/O locale. Man mano che i dispositivi NAS e l'infrastruttura di rete si evolvono, questi rapporti possono anche migliorare rispetto all'archiviazione collegata diretta o ai nomi SAN. Inoltre, se i dati dell'applicazione sono per lo più memorizzati nella cache nel pool di buffer del database e non si verificano colli di bottiglia di I/O descritti, le prestazioni in un sistema basato su NAS sono probabilmente adeguate per l'applicazione.

Considerazioni sul backup e il ripristino

SQL Server fornisce l'interfaccia VDI (Virtual Device Interface) per il backup. VDI offre ai fornitori di software di backup un mezzo a prestazioni elevate, scalabile e affidabile per l'esecuzione di backup ad accesso frequente e per il ripristino di database SQL Server.

Il software di backup funziona sui file di database archiviati nei dispositivi NAS tramite VDI senza alcun supporto speciale specifico per il NAS. Ciò comporta tuttavia un numero elevato di traffico di rete aggiuntivo durante il backup e il ripristino. Durante il backup tramite VDI, SQL Server legge i file in remoto e passa i dati al software di backup di terze parti in esecuzione nel computer SQL Server. L'operazione di ripristino è analoga.

Per evitare il sovraccarico aggiuntivo della rete, il fornitore del backup deve fornire il supporto specifico di NAS da parte del fornitore del backup e del fornitore NAS. SQL Server VDI consente al software di backup di sfruttare le tecnologie hardware (split-mirror) o software (copia in scrittura) supportate dai dispositivi NAS per eseguire copie veloci dei file di database locali al NAS. Queste tecnologie non solo evitano il sovraccarico della copia dei file in rete per il backup, ma possono anche ridurre i tempi di ripristino in base agli ordini di grandezza.

I backup archiviati in NAS sono vulnerabili agli stessi errori che interessano i file di database archiviati nel NAS. È consigliabile proteggere questi backup copiandoli in supporti alternativi.

Attenzione

È possibile che si verifichi un danneggiamento del database nel backup se si usano tecnologie di backup NAS senza SQL Server supporto VDI. Tale danneggiamento include pagine strappate o incoerenze tra il log e i file di dati se vengono archiviati in dispositivi separati. SQL Server potrebbe non rilevare le pagine o le incoerenze strappate fino a quando non si ripristina il database e si accede ai dati danneggiati. Microsoft non supporta l'uso di tecnologie di backup NAS non coordinate con SQL Server.

Il supporto di backup e il supporto dei fornitori NAS per SQL Server VDI variano. Rivolgersi ai fornitori di software nas e di backup per informazioni dettagliate sul supporto VDI.

Microsoft invita i clienti che stanno valutando una distribuzione di una soluzione NAS per SQL Server database a consultare il fornitore NAS per assicurarsi che la progettazione della soluzione end-to-end sia destinata all'uso del database. Molti fornitori NAS hanno guide alle procedure consigliate e configurazioni certificate per questo uso. Microsoft consiglia inoltre ai clienti di eseguire il benchmark delle prestazioni di I/O per garantire che nessuno dei fattori di I/O menzionati in precedenza causi un collo di bottiglia nell'applicazione.

Nell'elenco seguente viene descritto il supporto per i file basati sulla rete nei cluster di failover SQL:

Note aggiuntive

L'uso errato del software di database con un prodotto NAS o l'uso del database con un prodotto NAS configurato in modo non corretto può comportare la perdita di dati, inclusa la perdita totale del database. Se il dispositivo NAS o il software di rete non rispetta completamente le garanzie di dati, ad esempio l'ordinamento di scrittura o la scrittura, l'hardware, il software o anche gli errori di alimentazione potrebbero compromettere seriamente l'integrità dei dati.

Riferimenti