使用 Transact-SQL 存取 FILESTREAM 資料
此主題描述如何使用 Transact-SQL INSERT、UPDATE 及 DELETE 陳述式來管理 FILESTREAM 資料。
[!附註]
本主題中的範例需要使用在建立啟用 FILESTREAM 的資料庫及建立儲存 FILESTREAM 資料的資料表中建立之啟用 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 來建立包含資料的檔案。 Database Engine 會將 Seismic Data 字串轉換成 varbinary(max) 值。 FILESTREAM 會建立此 Windows 檔案 (如果不存在的話),然後資料會加入到此資料檔中。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 3,
CAST ('Seismic Data' as varbinary(max)));
GO
當您從 Archive.dbo.Records 資料表中選取所有資料時,其結果與下表所顯示的結果很相似。 不過,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 記憶體回收行程所移除。
[回到頁首]