次の方法で共有


_Streams テーブル

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

コラム 種類 許容
名前 テキスト Y N
データ バイナリ N Y

 

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

データ

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

備考

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

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

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

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

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

SQL を使用してこのテーブルに保留を設定する場合 (ALTER TABLE

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