Condividi tramite


Accedere a Dati FILESTREAM con Transact-SQL

Questo argomento descrive come usare le istruzioni Transact-SQL INSERT, UPDATE e DELETE per gestire i dati FILESTREAM.

Nota

Gli esempi riportati in questo argomento richiedono il database e la tabella abilitati per FILESTREAM creati in Creare un database abilitato per FILESTREAM e Creare una tabella per archiviare dati FILESTREAM.

Inserimento di una riga che contiene dati FILESTREAM

Per aggiungere una riga a una tabella che supporta i dati FILESTREAM, usare l'istruzione Transact-SQL INSERT. Quando vengono inseriti dati in una colonna FILESTREAM, è possibile inserire NULL o un valore varbinary(max).

Inserimento di NULL

Nell'esempio seguente viene illustrato come inserire il valore NULL. Quando il valore FILESTREAM è NULL, il motore di database non crea un file nel file system.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 1, NULL);
GO

Inserimento di un record di lunghezza zero

Nell'esempio seguente viene illustrato l'utilizzo di INSERT per creare un record di lunghezza zero. Questa istruzione risulta utile quando si desidera ottenere un handle di file, ma si modifica il file utilizzando API Win32.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 2, 
      CAST ('' as varbinary(max)));
GO

Creazione di un file di dati

Nell'esempio seguente viene illustrato l'utilizzo di INSERT per creare un file contenente dati. Il motore di database converte la stringa Seismic Data in un varbinary(max) valore. Se non esiste già, FILESTREAM crea il file di Windows. I dati verranno quindi aggiunti al file di dati.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO

Se si selezionano tutti i dati della tabella Archive,dbo.Records tabella, i risultati sono simili ai risultati visualizzati nella tabella seguente. La colonna Id conterrà tuttavia GUID diversi.

ID SerialNumber Riprendi
C871B90F-D25E-47B3-A560-7CC0CA405DAC 1 NULL
F8F5C314-0559-4927-8FA9-1535EE0BDF50 2 0x
7F680840-B7A4-45D4-8CD5-527C44D35B3F 3 0x536569736D69632044617461

Aggiornamento di dati FILESTREAM

È possibile usare Transact-SQL per aggiornare i dati nel file di file system; anche se potrebbe non voler eseguire questa operazione quando è necessario trasmettere grandi quantità di dati a un file.

Nel seguente esempio il testo nel record del file viene sostituito con il testo Xray 1.

UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;

Eliminazione di dati FILESTREAM

Quando si elimina una riga che contiene un campo FILESTREAM, vengono eliminati anche i file del file system sottostanti. L'unico modo per eliminare una riga e quindi il file consiste nell'usare l'istruzione Transact-SQL DELETE.

Nell'esempio seguente viene descritta l'eliminazione di una riga e dei file del file system associati.

DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO

Se si selezionano tutti i dati della tabella dbo.Archive , si nota che la riga non è più presente. Non è più possibile utilizzare il file associato.

Nota

I file sottostanti vengono rimossi dal Garbage Collector di FILESTREAM.

Vedere anche

Abilitare e configurare FILESTREAM
Evitare conflitti con le operazioni del database nelle applicazioni di FILESTREAM