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 の場合、ファイル システムにファイルは作成されません。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 1, NULL);
GO
長さ 0 のレコードの挿入
INSERT を使用して長さ 0 のレコードを作成する方法を次の例に示します。 これは、ファイル ハンドルを取得する必要がある場合に役立ちますが、Win32 API を使用してファイルを操作します。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 2,
CAST ('' as varbinary(max)));
GO
データ ファイルの作成
INSERT を使用して、データを含むファイルを作成する方法を次の例に示します。 データベース エンジンによって、文字列 Seismic Data が varbinary(max) 値に変換されます。 Windows ファイルが存在しない場合は、FILESTREAM によってそのファイルが作成されます。その後にデータがデータ ファイルに追加されます。
INSERT INTO Archive.dbo.Records
VALUES (newid (), 3,
CAST ('Seismic Data' as varbinary(max)));
GO
すべてのデータを Archive.dbo.Records テーブルから選択すると、次の表に示すような結果になります。 ただし、Id 列に格納される GUID は異なります。
Id |
SerialNumber |
Resume |
---|---|---|
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 ガベージ コレクターによって削除されます。 |
[先頭に戻る]