使用 Transact-SQL 存取 FILESTREAM 資料
本主題描述如何使用 Transact-SQL INSERT、UPDATE 和 DELETE 子句來管理 FILESTREAM 資料。
注意
本主題中的範例需要使用在 建立啟用 FILESTREAM 的資料庫 和 建立儲存 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
插入長度為零的記錄
下列範例將示範如何使用 INSERT
來建立長度為零的記錄。 當您想要取得檔案控制代碼,但是將要使用 Win32 API 操作檔案時,這會很有用。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 2,
CAST ('' as varbinary(max)));
GO
建立資料檔
下列範例將示範如何使用 INSERT
來建立包含資料的檔案。 資料庫引擎會將字串 Seismic Data
轉換為 varbinary(max)
值。 FILESTREAM 會建立此 Windows 檔案 (如果不存在的話),然後資料會加入到此資料檔中。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 3,
CAST ('Seismic Data' as varbinary(max)));
GO
當您從 Archive
.dbo.Records
table,結果類似下表所示的結果。 不過, Id
資料行將包含不同的 GUID。
Id | SerialNumber | 繼續 |
---|---|---|
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 記憶體回收行程所移除。