_Streams テーブル

_Streams テーブルには、埋め込み OLE データ ストリームが一覧表示されます。 これは一時テーブルであり、SQL ステートメントによって参照された場合にのみ作成されます。

Column 種類 キー Nullable
名前 テキスト Y N
Data Binary N Y

 

[列]

Name

ストリームを識別する一意のキー。 Name の最大長は 62 文字です。

Data

書式設定されていないバイナリ データ。

解説

ファイルからデータベースに OLE データ ストリーム (Binary データ型のオブジェクトなど) をコピーするには、_Streams テーブルにレコードを作成してこのレコードの Name 列にデータ ストリームの名前を入力し、MsiRecordSetStream を使用して Data 列にファイルからデータをコピーします。 新しいレコードをテーブルに挿入するには、MsiViewModify を使用します。

データベースに埋め込まれたバイナリ データ ストリームを読み取る場合は、SQL クエリを使用して、バイナリ データを含むレコードを検索してフェッチします。 バイナリ データをバッファーに読み取るには、MsiRecordReadStream を使用します。

バイナリ データ ストリームをあるデータベースから別のデータベースに移動するには、まずデータをファイルにエクスポートします。 SQL クエリを使用してファイル内のデータ ストリームを検索した後、MsiRecordSetStream を使用して、ファイルのデータを 2 番目のデータベースの _Streams テーブルの Data 列にコピーします。 これにより、各データベースがバイナリ データの独自のコピーを持つようになります。 最初のデータベースからデータを含むレコードをフェッチし、それを 番目のデータベースに挿入するだけでは、バイナリ データをあるデータベースから別のデータベースに移動することはできません。

データ ストリームを削除するには、レコードをフェッチし、レコードを更新する前に Data 列を null に設定します。 もう 1 つの方法は、MsiViewModify またはプレーン SQL クエリを使用して、レコードを削除することです。 ストリームがテーブルから削除された状態で、ストリームをレコードにフェッチしないでください。

OLE データ ストリームの名前を変更するには、レコードの 'Name' 列を更新します。

SQL (ALTER TABLE HOLD) を使用してこのテーブルにホールドが設定されている場合、

または HOLD で列が追加されている場合、FREE を使用してテーブルを解放する必要があります。 テーブルが解放またはコミットされるまで、ストリームは書き込まれません。