_Streams 表
_Streams 表列出嵌入的 OLE 数据流。 这是一个临时表,仅在 SQL 语句引用时才创建。
列 | 类型 | 密钥 | Nullable |
---|---|---|---|
名称 | 文本 | Y | N |
数据 | 二进制 | N | Y |
列
-
Name
-
标识流的唯一键。 名称的最大长度为 62 个字符。
-
Data
-
无格式的二进制数据。
备注
若要将 OLE 数据流(例如,二进制数据类型的对象)从文件复制到数据库中,请在 _Streams 表中创建一条记录,并将数据流的名称输入到此记录的 Name 列中,并使用 MsiRecordSetStream 将数据从文件复制到 Data 列。 使用 MsiViewModify 向表中插入新记录。
若要读取嵌入在数据库中的二进制数据流,请使用 SQL 查询查找和提取包含二进制数据的记录。 使用 MsiRecordReadStream 将二进制数据读入缓冲区。
若要将二进制数据流从一个数据库移到另一个数据库,请先将数据导出到文件。 使用 SQL 查询查找文件中的数据流,并使用 MsiRecordSetStream 将数据从文件复制到第二个数据库的 _Streams 表的 Data 列中。 这可以确保每个数据库都有自身的二进制数据副本。 不能仅仅通过从第一个数据库中提取包含数据的记录并将其插入第二个数据库,将二进制数据从一个数据库移到另一个数据库。
若要删除数据流,请在更新记录之前提取记录并将 Data 列设置为 null。 另一种方法是从表中删除记录,使用 MsiViewModify 或纯 SQL 查询将其删除。 如果从表中删除流,则不应将流提取到记录中。
若要重命名 OLE 数据流,请更新记录的“Name”列。
如果使用 SQL (ALTER TABLE HOLD) 对此表进行保留
或使用 HOLD 添加列,必须使用 FREE 释放该表。 在释放或提交表之前,不会写入流。