Freigeben über


FILESTREAM con SharePoint 2010

Articolo originale pubblicato giovedì 21 aprile 2011

Autore: Bill Baer, Senior Technical Product Manager, Microsoft Corporation - SharePoint

FILESTREAM è una nuova caratteristica di SQL Server 2008 che consente l'archiviazione di dati non strutturati in un file system NTFS. FILESTREAM (locale o remoto) è supportato in SharePoint 2010 come meccanismo per ridurre le spese di investimento permettendo di archiviare i dati non strutturati binari di grandi dimensioni mediante l'archiviazione commerciale o l'archiviazione indirizzabile in base al contenuto (CAS, Content Addressable Storage).

Dati non strutturati

Per dati non strutturati si intendono informazioni non conformi a un modello definito o che non rientrano perfettamente nelle tabelle relazionali in SharePoint. I dati non strutturati possono riferirsi a formati di documenti di Microsoft Office, video, audio e tipi di file correlati.

 

Dati strutturati

Per dati strutturati in SharePoint si intendono i metadati associati ai relativi BLOB o dati non strutturati corrispondenti. I database relazioni vengono molto spesso indicati come esempi di dati strutturati.

 

SQL Server e archiviazione di dati non strutturati

Per archiviare dati non strutturati con SQL Server, vi sono tre approcci possibili, ovvero Archiviazione BLOB remoti, BLOB SQL e FILESTREAM:

  • Con Archiviazione BLOB remoti (RBS), SharePoint si basa su un nuovo livello di SQL Server per leggere o aggiornare i dati BLOB archiviati all'esterno del database in archivi BLOB separati (file system o archivi BLOB dedicati).
  • Con BLOB SQL, che fa riferimento all'archiviazione BLOB tradizionale con SharePoint, i dati BLOB vengono archiviati insieme ai metadati strutturati nel database del contenuto.
  • FILESTREAM.

 

Panoramica di FILESTREAM

FILESTREAM viene implementato nel tipo di dati varbinary(max), che indica al motore di database di archiviare i dati non strutturati nel file system mediante un filegroup FILESTREAM contenente directory del file system anziché i file stessi (i cosiddetti contenitori di dati). Tali contenitori costituiscono l'interfaccia tra lo spazio di archiviazione del motore di database e lo spazio di archiviazione del file system. varbinary è la designazione del tipo di dati binario per gli oggetti binari di grandi dimensioni archiviati nei database del contenuto di SharePoint 2010 e si riferisce a dati binari di lunghezza variabile. (MAX) si riferisce a un valore che indica che la massima dimensione dello spazio di archiviazione è 2^31-1 byte, ovvero 2 GB. Archiviazione BLOB remoti non fornisce un meccanismo per superare il limite di 2 GB imposto da SharePoint per la dimensione dei file.

 

In SharePoint 2010 ai dati BLOB remoti viene fatto riferimento mediante un identificatore univoco configurato per Archiviazione BLOB remoti nei database del contenuto. Vedere la figura.

 

 

 

 

 

FILESTREAM offre numerosi vantaggi in termini di prestazioni: 1) FILESTREAM utilizza la cache di sistema NT per memorizzare nella cache i dati dei file, riducendo l'impatto dei dati FILESTREAM sulle prestazioni del motore di database e 2) il pool di buffer di SQL Server non viene utilizzato, pertanto la memoria è disponibile per l'elaborazione delle query.

 

FILESTREAM è particolarmente utile negli scenari in cui SharePoint viene utilizzato per archiviare dati BLOB di grandi dimensioni, ad esempio file video che trarranno vantaggio dai dati FILESTREAM o BLOB che superano 1 MB.

 

Considerazioni speciali

 

FILESTREAM e gestione della continuità aziendale

 

Il mirroring di database non supporta FILESTREAM poiché non è possibile creare un filegroup FILESTREAM nel server principale e il mirroring di database non può essere configurato per un database contenente filegroup FILESTREAM. Se il provider FILESTREAM viene utilizzato per archiviare i dati BLOB localmente (nello stesso database del contenuto), il database non potrà essere configurato per il mirroring di database.

 

Se il provider FILESTREAM viene configurato per archiviare i dati BLOB in un database SQL separato o quando si utilizza un archivio BLOB di terze parti, è possibile eseguire il mirroring del database del contenuto. Il mirroring di database verrà tuttavia applicato solo al database del contenuto e non ai dati BLOB. Tali dati devono essere gestiti separatamente e mantenuti sincronizzati con i metadati associati (database del contenuto). Per i database BLOB di FILESTREAM, ciò è possibile mediante il log shipping.

 

Per informazioni sulle differenze tra FILESTREAM e l'archivio BLOB remoti di SQL Server, vedere inoltre https://blogs.msdn.com/b/sqlrbs/archive/2009/11/18/sql-server-remote-blob-store-and-filestream-feature-comparison.aspx.

 

FILESTREAM e cache di Office Web Applications

 

La cache di Office Web Applications viene utilizzata da Word Web App e PowerPoint Web App per creare una versione di un documento richiesto per la visualizzazione mediante il browser, migliorando le prestazioni e riducendo il consumo di risorse nei computer server. A tale scopo, vengono infatti rese disponibili versioni di un documento o di una presentazione memorizzate nella cache nei casi in cui vi sono più richieste per lo stesso file.

 

La cache di Office Web Applications è disponibile in due livelli distinti, ovvero nel file system del server e all'interno di una raccolta siti "specializzata" ospitata nelle singole applicazioni Web. Le richieste di documenti o presentazioni effettuate tramite Office Web Applications vengono gestite mediante tutte e due le cache mentre viene eseguito il rendering delle immagini per l'utilizzo da parte dei client. Entrambe le posizioni di cache vengono utilizzate da tutte le raccolte siti in un'applicazione Web in cui sono attivate le caratteristiche di Office Web Applications.

 

I database del contenuto in cui è configurato FILESTREAM archivieranno le versioni del documento o della presentazione memorizzate nella cache nella posizione del provider configurata. È consigliabile configurare la cache di Office Web Applications in un database non configurato per FILESTREAM.

 

Configurazione di FILESTREAM con SharePoint 2010

Le istruzioni riportate di seguito devono essere eseguite in una distribuzione a server singolo a scopo dimostrativo e consentono di implementare il provider FILESTREAM locale.

 

Abilitare FILESTREAM nell'istanza di SQL Server di destinazione

 

1. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2008 (R2) , Strumenti di configurazione e quindi Gestione configurazione SQL Server.

2. Nell'elenco dei servizi fare clic con il pulsante destro del mouse su Servizi di SQL Server e quindi scegliere Apri.

3. Nello snap-in Gestione configurazione SQL Server individuare l'istanza di SQL Server in cui si desidera abilitare FILESTREAM.

4. Fare clic con il pulsante destro del mouse sull'istanza e quindi scegliere Proprietà.

5. Nella finestra di dialogo delle proprietàdi SQL Server fare clic sulla scheda FILESTREAM.

6. Selezionare la casella di controllo Abilita FILESTREAM per l'accesso Transact-SQL.

7. Se si desidera leggere e scrivere dati FILESTREAM da Windows, selezionare Abilita FILESTREAM per l'accesso tramite il flusso di I/O dei file. Immettere il nome della condivisione di Windows nella casella Nome condivisione di Windows.

8. Se i client remoti devono accedere ai dati FILESTREAM archiviati in questa condivisione, selezionare Consenti ai client remoti l'accesso tramite flusso ai dati FILESTREAM.

9. Fare clic su Applica.

10. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2008 (R2) e quindi SQL Server Management Studio.

11. In SQL Server Management Studio fare clic su Nuova query per visualizzare l'Editor di query.

12. Nell'Editor di query immettere il codice Transact-SQL seguente:

 

EXEC sp_configure filestream_access_level, 2

 

Nell'Editor di query immettere il codice Transact-SQL seguente:

 

RECONFIGURE

Effettuare il provisioning dell'archivio dati di Archiviazione BLOB remoti

 

1. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2008 (R2) e quindi SQL Server Management Studio.

2. Espandere Database.

3. Selezionare il database del contenuto per il quale si desidera creare un archivio BLOB e quindi fare clic su Nuova query.

4. In SQL Server Management Studio fare clic su Nuova query per visualizzare l'Editor di query.

5. Nell'Editor di query immettere il codice Transact-SQL seguente:

 

use [Nome database]

 

if not exists (select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##')create master key encryption by password = N'Admin Key Password !2#4'

 

Nell'Editor di query immettere il codice Transact-SQL seguente:

 

use [Nome database]

 

if not exists (select groupname from sysfilegroups where groupname=N'RBSFilestreamProvider')alter database [Nome database] add filegroup RBSFilestreamProvider contains filestream

 

Nell'Editor di query immettere il codice Transact-SQL seguente:

 

use [Nome database]

 

alter database [Nome database] add file (name = RBSFilestreamFile, filename = 'c:\BlobStore') to filegroup RBSFilestreamProvider

Installare l'archivio BLOB remoti di Microsoft SQL Server 2008 R2

 

Scaricare il pacchetto x64 per l'archivio BLOB remoti di Microsoft SQL Server 2008 R2 dal Feature Pack di Microsoft SQL Server 2008 R2 all'indirizzo https://www.microsoft.com/downloads/en/details.aspx?FamilyID=ceb4346f-657f-4d28-83f5-aae0c5c83d52&displaylang=en.

 

Aprire un prompt dei comandi con autorizzazioni di amministratore ed eseguire il comando seguente per installare il file RBS.MSI scaricato nel passaggio precedente:

 

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME="<Nome database>" DBINSTANCE="<Nome istanza>" FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

 

NOTA

Specificare il percorso completo di RBS.MSI nell'istruzione sopra riportata, ovvero C:\Users\Administrator\Desktop\RBS.MSI. Sostituire i valori per DBNAME e DBINSTANCE in base all'ambiente in uso.

 

Abilitare Archiviazione BLOB remoti

1. Fare clic sul pulsante Start e scegliere Tutti i programmi.

2. Scegliere Prodotti Microsoft SharePoint 2010.

3. Scegliere Shell di gestione SharePoint 2010.

4. In Shell di gestione SharePoint 2010 immettere l'istruzione di Windows PowerShell seguente per impostare il database del contenuto da configurare:

$database=Get-SPContentDatabase –Identity “Nome database”

In Shell di gestione SharePoint 2010 immettere l'istruzione di Windows PowerShell seguente per ottenere l'oggetto contenente le impostazioni che determinano il modo in cui il database del contenuto utilizza Archiviazione BLOB remoti di Microsoft SQL Server:

$rbs=$database.RemoteBlobStorageSettings

In Shell di gestione SharePoint 2010 immettere l'istruzione di Windows PowerShell seguente per determinare se Archiviazione BLOB remoti è stata installata per il database del contenuto selezionato:

$rbs.Installed()

NOTA

Il risultato di $rbs.Installed() deve essere True. Se il risultato è False, verificare che RBS.MSI sia stato installato correttamente esaminando il file rbs_install_log.txt. Controllare che l'istruzione di installazione fosse in esecuzione. In Shell di gestione SharePoint 2010 immettere l'istruzione di Windows PowerShell seguente per abilitare Archiviazione BLOB remoti per il database del contenuto selezionato:

 

$rbs.Enable()

In Shell di gestione SharePoint 2010 immettere le istruzioni di Windows PowerShell seguenti per impostare il provider RBS per il database del contenuto selezionato:

$rbs.SetActiveProviderName($rbs.GetProviderNames()[0])

 

$rbs

 

NOTA

Il risultato di $rbs dovrebbe essere il seguente:

Tabella 1

 

Appendice alla Tabella 1

 

Enabled specifica se Archiviazione BLOB remoti è stata o meno abilitata per il database del contenuto selezionato.

 

ActiveProviderName è il nome del provider RBS SQL in cui verranno archiviati i nuovi file. Sarà null se i nuovi file non verranno archiviati mediante Archiviazione BLOB remoti SQL.

 

MinimumBlobStorageSize si riferisce alla dimensione minima che un BLOB deve avere affinché possa essere considerato per l'archiviazione mediante Archiviazione BLOB remoti. I dati BLOB che superano il valore MinimumBlobStorageSize specificato verranno archiviati nell'archivio dati di Archiviazione BLOB remoti.

 

I dati sulle prestazioni di FILESTREAM mostrano che i dati BLOB che superano 1 MB garantiscono il flusso più efficiente. Vedere anche https://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx.

 

 

Per configurare il valore MinimumBlobStorageSize:

1. Fare clic sul pulsante Start e scegliere Tutti i programmi.

2. Scegliere Prodotti Microsoft SharePoint 2010.

3. Scegliere Shell di gestione SharePoint 2010.

4. In Shell di gestione SharePoint 2010 immettere le istruzioni di Windows PowerShell seguenti per impostare MinimumBlobStorageSize su 1 MB:

$database = Get-SPContentDatabase “Nome database”

 

$database.RemoteBlobStorageSettings.MinimumBlobStorageSize=1048576

 

$database.Update()

UpgradePersistedProperties specifica l'insieme di nomi di campi e dei relativi valori eliminati o modificati.

 

Convalidare l'installazione

Per convalidare la configurazione di FILESTREAM e l'installazione di Archiviazione BLOB remoti:

 

1. Fare clic sul pulsante Start, scegliere Tutti i programmi, Microsoft SQL Server 2008 e quindi SQL Server Management Studio.

2. Espandere Database.

3. Selezionare il database del contenuto per il quale si desidera creare un archivio BLOB e quindi fare clic su Nuova query.

4. In SQL Server Management Studio fare clic su Nuova query per visualizzare l'Editor di query.

5. Nell'Editor di query immettere il codice Transact-SQL seguente:

USE [Nome database]

SELECT * FROM dbo.DatabaseInformation

Verificare che la riga RBSCollectionId e la riga RBSProvider siano entrambe disponibili.

 

Verificare l'archivio dati di Archiviazione BLOB remoti

1. Selezionare una raccolta documenti desiderata in un sito nel database del contenuto configurato.

2. Caricare un file di dimensioni maggiori di 1 MB.

3. Nel computer contenente l'archivio dati di Archiviazione BLOB remoti fare clic sul pulsante Start e quindi scegliere Computer.

4. Passare alla directory dell'archivio dati di Archiviazione BLOB remoti.

5. Passare all'elenco dei file e aprire la cartella con la data di modifica più recente (che non sia $FSLOG). In tale cartella aprire il file con la data di modifica più recente. Verificare che tale file abbia le stesse dimensioni e lo stesso contenuto del file caricato. In caso negativo, verificare che Archiviazione BLOB remoti sia installata e abilitata correttamente.

La struttura di directory dell'archivio dati risulterà simile a quella illustrata nel diagramma riportato di seguito.

 

 

NOTA

Se viene visualizzato l'errore "L'URL '<Raccolta documenti>/File' non è valido. Potrebbe fare riferimento a una cartella o un file inesistente oppure a una cartella o un file valido che non si trova nel Web corrente" durante il caricamento di documenti di dimensioni maggiori del valore MinimumBlobStorageSize configurato, aprire Gestione configurazione SQL Server, selezionare Abilita FILESTREAM per l'accesso tramite il flusso di I/O dei file e riavviare il servizio di SQL Server (MSSQLSERVER).

 

Risorse aggiuntive

 

 

Categoria: Procedure; SharePoint 2010

Data pubblicazione: 22/04/2011 09.00

Questo è un post di blog localizzato. L'articolo originale è disponibile in FILESTREAM with SharePoint 2010.