_Streams數據表
_Streams數據表會列出內嵌的 OLE 數據流。 這是臨時表,只有在 SQL 語句參考時才建立。
列 | 類型 | 鑰匙 | 空 |
---|---|---|---|
名字 | 文字 | Y | N |
數據 | 二進位 | N | Y |
列
-
名稱
-
識別數據流的唯一索引鍵。 Name 的最大長度為 62 個字元。
-
數據
-
未格式化的二進位數據。
言論
若要將 OLE 數據流(例如,二進位 數據類型的物件)從檔案複製到資料庫,請在_Streams數據表中建立記錄,並將數據流的名稱輸入到此記錄的 Name 數據行,並使用 msiRecordSetStream將檔案中的數據複製到 Data 數據行。 使用 MsiViewModify,將新記錄插入數據表中。
若要讀取內嵌在資料庫中的二進位數據流,請使用 SQL 查詢來尋找並擷取包含二進位數據的記錄。 使用 MsiRecordReadStream 將二進位數據讀入緩衝區。
若要將二進位數據流從某個資料庫移至另一個資料庫,請先將數據匯出至檔案。 使用 SQL 查詢來尋找檔案中的數據流,並使用 MsiRecordSetStream,將數據從檔案複製到第二個資料庫的 _Streams 數據表的數據行。 這可確保每個資料庫都有自己的二進位數據複本。 您只要從第一個資料庫擷取具有數據並插入第二個資料庫的記錄,就無法將二進位數據從一個資料庫移至另一個資料庫。
若要刪除數據流,請先擷取記錄,並將 [資料] 資料行設定為 Null,再更新記錄。 另一種方法是從數據表中移除記錄,請使用 MsiViewModify 或一般 SQL 查詢加以刪除。 如果數據流從數據表中刪除,則不應該將數據流擷取到記錄中。
若要重新命名 OLE 資料流,請更新記錄的 『Name』 資料行。
如果使用 SQL 將保留放在此數據表上(ALTER TABLE
HOLD) 或具有 HOLD 的數據行,必須使用 FREE 釋放數據表。 在數據表發行或認可之前,不會寫入數據流。