本主題描述如何使用 Transact-SQL INSERT、UPDATE 和 DELETE 語句來管理 FILESTREAM 數據。
備註
本主題中的範例需要在 建立 FILESTREAM-Enabled 資料庫 和 建立用於儲存 FILESTREAM 資料的資料表 中創建 FILESTREAM 資料庫和資料表。
插入包含 FILESTREAM 資料的數據列
若要將數據列新增至支援 FILESTREAM 數據的數據表,請使用 Transact-SQL INSERT 語句。 當您將數據插入 FILESTREAM 資料行時,可以插入 NULL 或 varbinary(max) 值。
插入 NULL
下列範例示範如何插入 NULL。 當 FILESTREAM 值為 NULL時,Database Engine 不會在文件系統中建立檔案。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 1, NULL);
GO
插入 Zero-Length 記錄
下列範例示範如何使用 INSERT 來建立長度為零的記錄。 在您想要取得檔案句柄,以使用 Win32 API 操作檔案時,這非常有用。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 2,
CAST ('' as varbinary(max)));
GO
建立數據檔
下列範例示範如何使用 INSERT 來建立包含數據的檔案。 Database Engine 會將字串Seismic Datavarbinary(max)轉換成值。 如果檔案不存在,FILESTREAM 會建立 Windows 檔案。然後,數據會新增至數據檔。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 3,
CAST ('Seismic Data' as varbinary(max)));
GO
當您從 Archive中選取所有資料時。
dbo.Records 表格,結果類似於下方表格所示的結果。 不過,Id 欄將包含不同的 GUID。
| 身份識別碼 | 序列號 | 履歷 |
|---|---|---|
C871B90F-D25E-47B3-A560-7CC0CA405DAC |
1 |
NULL |
F8F5C314-0559-4927-8FA9-1535EE0BDF50 |
2 |
0x |
7F680840-B7A4-45D4-8CD5-527C44D35B3F |
3 |
0x536569736D69632044617461 |
更新 FILESTREAM 數據
您可以使用 Transact-SQL 來更新檔案系統檔案中的數據;不過,當您必須將大量數據串流至檔案時,您可能不想要這麼做。
下列範例會以文字 Xray 1來取代檔案記錄中的所有文字。
UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;
刪除 FILESTREAM 資料
當您刪除包含 FILESTREAM 欄位的數據列時,也會刪除其基礎檔案系統檔案。 唯一刪除列,從而刪除檔案的方法是使用 Transact-SQL DELETE 語句。
下列範例示範如何刪除數據列及其相關聯的檔案系統檔案。
DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO
當您從 dbo.Archive 數據表中選取所有數據時,數據列就會消失。 您無法再使用相關聯的檔案。
備註
基礎檔案會由 FILESTREAM 記憶體回收行程所移除。