Share via


使用 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 來建立包含資料的檔案。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 記憶體回收行程所移除。