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