Accedere a Dati FILESTREAM con Transact-SQL
In questo argomento viene descritto come utilizzare le istruzioni Transact-SQL INSERT, UPDATE e DELETE per gestire dati FILESTREAM.
[!NOTA]
Per gli esempi riportati in questo argomento sono richiesti la tabella e il database abilitati per FILESTREAM creati in Creazione di un database abilitato per FILESTREAM e Creazione di una tabella per archiviare dati FILESTREAM.
Contenuto dell'argomento
Inserimento di una riga che contiene dati FILESTREAM
Aggiornamento di dati FILESTREAM
Eliminazione di dati FILESTREAM
Inserimento di una riga che contiene dati FILESTREAM
Per aggiungere una riga a una tabella che supporta i dati FILESTREAM, utilizzare 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. Se il valore FILESTREAM è NULL, il Motore di database non crea alcun 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 valore varbinary(max). 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 dalla tabella Archive.dbo.Records, i risultati dovrebbero essere analoghi a quelli illustrati 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 |
[TORNA ALL'INIZIO]
Aggiornamento di dati FILESTREAM
Per aggiornare i dati in file del file system, è possibile utilizzare Transact-SQL, sebbene sia preferibile evitare questa procedura quando si devono trasmettere elevate 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;
[TORNA ALL'INIZIO]
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 pertanto il file è l'utilizzo dell'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.
[TORNA ALL'INIZIO]
Vedere anche
Concetti
Abilitazione e configurazione di FILESTREAM
Evitare conflitti con le operazioni del database nelle applicazioni di FILESTREAM