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 ガベージ コレクターによって削除されます。

[先頭に戻る]

関連項目

概念

FILESTREAM の有効化と構成

FILESTREAM アプリケーションでのデータベース操作との競合の回避