_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 を使用してテーブルを解放する必要があります。 テーブルが解放またはコミットされるまで、ストリームは書き込まれません。