Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Poiché i dati FILESTREAM si trovano nel file system, in questo argomento vengono fornite alcune considerazioni, linee guida e limitazioni per l'uso di FILESTREAM con le funzionalità seguenti in SQL Server:
SQL Server Integration Services (SSIS)
SQL Server Integration Services (SSIS) gestisce i dati FILESTREAM nel flusso di dati come tutti gli altri dati BLOB usando il tipo di dati SSIS DT_IMAGE.
È possibile usare la trasformazione Importa colonna per caricare i file dal file system in una colonna FILESTREAM. È anche possibile utilizzare la trasformazione Esporta Colonna per estrarre file da una colonna FILESTREAM verso un altro percorso nel file system.
Query distribuite e server collegati
È possibile usare i dati FILESTREAM tramite query distribuite e server collegati trattandoli come varbinary(max) dati. Non è possibile utilizzare la funzione FILESTREAM PathName() nelle query distribuite che usano un nome in quattro parti, anche quando il nome fa riferimento al server locale. Tuttavia, è possibile usare PathName() nella query interna di una query pass-through che usa OPENQUERY().
Crittografia
I dati FILESTREAM non vengono crittografati anche quando è abilitata la crittografia dei dati trasparente.
Istantanea del database
SQL Server non supporta gli snapshot del database per i filegroup FILESTREAM. Se un filegroup FILESTREAM è incluso in una clausola CREATE DATABASE ON, l'istruzione avrà esito negativo e verrà generato un errore.
Quando si usa FILESTREAM, è possibile creare snapshot di database di filegroup standard (non FILESTREAM). I filegroup FILESTREAM sono contrassegnati come offline per tali snapshot del database.
Un'istruzione SELECT eseguita in una tabella FILESTREAM in uno snapshot del database non deve includere una colonna FILESTREAM; in caso contrario, verrà restituito il messaggio di errore seguente:
Could not continue scan with NOLOCK due to data movement.
Duplicazione
Una varbinary(max) colonna con l'attributo FILESTREAM abilitato presso l'editore può essere replicata a un sottoscrittore con o senza l'attributo FILESTREAM. Per specificare la modalità di replica della colonna, utilizzare la finestra di dialogo Proprietà articolo - <Articolo> o il @schema_option parametro di sp_addarticle o sp_addmergearticle. I dati replicati in una varbinary(max) colonna che non dispone dell'attributo FILESTREAM non devono superare il limite di 2 GB per tale tipo di dati. In caso contrario, viene generato un errore di run-time. Si consiglia di replicare l'attributo FILESTREAM, a meno che l'operazione di replica dei dati verso i Sottoscrittori di SQL Server 2000 non sia supportata, a prescindere dall'opzione dello schema specificata.
Annotazioni
La replica di valori di dati di grandi dimensioni dai Sottoscrittori di SQL Server 2014 a SQL Server 2005 (9.x) è limitata a un massimo di 256 MB di dati. Per altre informazioni, vedere Specifiche di capacità massima.
Considerazioni sulla replica transazionale
Se si usano colonne FILESTREAM nelle tabelle pubblicate per la replica transazionale, tenere presenti le considerazioni seguenti:
Se una tabella include colonne con l'attributo FILESTREAM, non è possibile utilizzare valori di snapshot del database o carattere snapshot del database per la @sync_method proprietà di sp_addpublication.
L'opzione max text repl size consente di specificare la quantità massima di dati che è possibile inserire in una colonna pubblicata per la replica. Questa opzione può essere usata per controllare le dimensioni dei dati FILESTREAM replicati.
Se si specifica l'opzione dello schema per replicare l'attributo FILESTREAM, ma si filtra la
uniqueidentifiercolonna richiesta da FILESTREAM oppure si specifica di non replicare il vincolo UNIQUE per la colonna, la replica non replica l'attributo FILESTREAM. La colonna viene replicata solo comevarbinary(max)colonna.
Considerazioni sulla replica di tipo merge
Se si usano colonne FILESTREAM nelle tabelle pubblicate per la replica di tipo merge, tenere presenti le considerazioni seguenti:
Sia la replica di tipo merge che FILESTREAM richiedono una colonna di tipo dati
uniqueidentifierper identificare ogni riga in una tabella. La replica di tipo merge aggiunge automaticamente una colonna se la tabella non ne ha una. La replica di tipo merge richiede che la colonna abbia la proprietà ROWGUIDCOL impostata e che il valore predefinito sia NEWID() o NEWSEQUENTIALID(). Oltre a questi requisiti, FILESTREAM richiede che venga definito un vincolo UNIQUE per la colonna. Questi requisiti hanno le conseguenze seguenti:Se si aggiunge una colonna FILESTREAM a una tabella già pubblicata per la replica di tipo merge, assicurarsi che la colonna
uniqueidentifierabbia un vincolo univoco. Se non dispone di un vincolo UNIQUE, aggiungere un vincolo denominato alla tabella nel database di pubblicazione. Per impostazione predefinita, la replica di tipo merge pubblicherà questa modifica dello schema e verrà applicata a ogni database di sottoscrizione.Se si aggiunge manualmente un vincolo UNIQUE come descritto e si vuole rimuovere la replica di tipo merge, è prima necessario rimuovere il vincolo UNIQUE; in caso contrario, la rimozione della replica avrà esito negativo.
Per impostazione predefinita, la replica di tipo merge usa NEWSEQUENTIALID() perché può offrire prestazioni migliori rispetto a NEWID(). Se si aggiunge una
uniqueidentifiercolonna a una tabella che verrà pubblicata per la replica di tipo merge, specificare NEWSEQUENTIALID() come valore predefinito.
La replica di tipo merge include un'ottimizzazione per la replica di tipi di oggetti di grandi dimensioni. Questa ottimizzazione è controllata dal @stream_blob_columns parametro di sp_addmergearticle. Se si imposta l'opzione dello schema per replicare l'attributo FILESTREAM, il valore del @stream_blob_columns parametro viene impostato su
true. Questa ottimizzazione può essere annullata tramite sp_changemergearticle. Questa stored procedure consente di impostare @stream_blob_columns sufalse. Se si aggiunge una colonna FILESTREAM a una tabella già pubblicata per la replica di tipo merge, è consigliabile impostare l'opzione sutrueusando sp_changemergearticle.L'abilitazione dell'opzione dello schema per FILESTREAM dopo la creazione di un articolo può causare l'esito negativo della replica se i dati in una colonna FILESTREAM superano 2 GB e si verifica un conflitto durante la replica. Se si prevede che si verifichi questa situazione, è consigliabile eliminare e ricreare l'articolo della tabella con l'opzione di schema FILESTREAM appropriata abilitata al momento della creazione.
La replica di tipo merge può sincronizzare i dati FILESTREAM tramite una connessione HTTPS usando la sincronizzazione Web. Questi dati non possono superare il limite di 50 MB per la sincronizzazione Web; in caso contrario, viene generato un errore di run-time.
Trasferimento dei Log
Il log shipping è compatibile con FILESTREAM. Sia i server primari che i server secondari devono eseguire SQL Server 2008 o versione successiva e avere FILESTREAM abilitato.
Mirroring del database
Il mirroring del database non supporta FILESTREAM. Impossibile creare un filegroup FILESTREAM nel server principale. Non è possibile configurare il mirroring del database per un database che contiene filegroup FILESTREAM.
Indicizzazione del testo completo
L'indicizzazione full-text funziona con una colonna FILESTREAM nello stesso modo in cui funziona con una varbinary(max) colonna. La tabella FILESTREAM deve avere una colonna contenente l'estensione del nome file per ogni BLOB FILESTREAM. Per altre informazioni, vedere Eseguire query con ricerca Full-Text, configurare e gestire filtri per la ricerca e sys.fulltext_document_types (Transact-SQL).
Il motore full-text indicizza il contenuto dei BLOB FILESTREAM. L'indicizzazione di file come immagini potrebbe non essere utile. Quando un BLOB FILESTREAM viene aggiornato, viene reindicizzato.
Failover Clustering
Per il clustering di failover, i filegroup FILESTREAM devono essere inseriti su un disco condiviso. FILESTREAM deve essere abilitato in ogni nodo del cluster che ospiterà l'istanza FILESTREAM. Per altre informazioni, vedere Configurare FILESTREAM in un cluster di failover.
SQL Server Express
SQL Server Express supporta FILESTREAM. Il limite di dimensioni del database da 10 GB non include il contenitore di dati FILESTREAM.
Database indipendenti
La funzionalità FILESTREAM richiede una configurazione esterna al database. Pertanto, un database che utilizza FILESTREAM o FileTable non è completamente contenuto.
È possibile impostare il contenimento del database su PARTIAL se si desidera utilizzare determinate funzionalità di database indipendenti, ad esempio utenti indipendenti. In questo caso, tuttavia, è necessario tenere presente che alcune impostazioni del database non sono contenute nel database e non vengono spostate automaticamente quando il database viene spostato.