このトピックでは、Transact-SQL INSERT、UPDATE、DELETE ステートメントを使用して FILESTREAM データを管理する方法について説明します。
注
このトピックの例では、「FILESTREAM-Enabled データベースの作成」および「FILESTREAM データを格納するためのテーブルの作成」で作成した FILESTREAM 対応データベースとテーブルが必要です。
FILESTREAM データを含む行の挿入
FILESTREAM データをサポートするテーブルに行を追加するには、Transact-SQL INSERT ステートメントを使用します。 FILESTREAM 列にデータを挿入する場合は、NULL または varbinary(max)
値を挿入できます。
NULL の挿入
次の例は、 NULL
を挿入する方法を示しています。 FILESTREAM 値が NULL
されると、データベース エンジンはファイル システムにファイルを作成しません。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 1, NULL);
GO
Zero-Length レコードの挿入
次の例は、 INSERT
を使用して長さ 0 のレコードを作成する方法を示しています。 これは、ファイル ハンドルを取得するが、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
結果は、次の表に示す結果と似ています。 ただし、 Id
列には異なる GUID が含まれます。
ID (アイディー) | シリアルナンバー | レジュメ |
---|---|---|
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 ガベージ コレクターによって削除されます。