我们希望创建一个c#/ VC ++应用程序,我们应该能够以我们自己的文件格式(以在线方式)创建sql server数据库SNAPSHOT。
稍后我们应该能够使用我们的应用程序以离线方式从这些快照文件中获取数据(即我们应该能够获得表/列的数量/名称等等)。
有人知道怎么做吗?
由于
答案 0 :(得分:0)
如果您对表和列的名称纯粹感兴趣,一个简单的解决方案是查询INFORMATION_SCHEMA.COLUMNS
:
select * from INFORMATION_SCHEMA.COLUMNS
您可以以您选择的文件格式存储此查询的输出 - 它应该为您提供足够的信息,以便在以后可视化表格的结构。
INFORMATION_SCHEMA
还包括有关索引,约束等的其他视图,您可以将它们连接在一起以获得更完整的数据库结构图。它包含在SQL 2000 SP3和所有更高版本中。
或者,如果您拥有它们,则可以从源代码管理系统使用数据库的DDL脚本,并解析这些脚本以获取架构的历史视图。
答案 1 :(得分:0)
我很确定这实际上是不可能的。
为快照供电的基本机制是写时复制。 COW允许您通过在实际更改之前不复制数据而有效地制作现有数据的廉价副本,然后仅复制修改的部分。因此,任何未修改的数据将在原始副本和表观副本之间共享。
数据库快照仅是原始版本,而数据库的“当前”状态是COW副本。你不能自己设置,因为你不能只是制作数据库的COW副本。即使您可以制作这样的副本,COW副本的整个要点是它是副本,即采用相同的格式。所以它不会是你的格式。