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