2010-02-16 30 views
0

我们想要创建一个c#/ VC++应用程序,通过它我们应该能够以我们自己的文件格式(以在线方式)创建sql server数据库SNAPSHOT。使用我们自己的文件格式创建数据库SnapShots

后来,我们应该能够使用我们的应用程序以离线方式从这些快照文件中获取数据(即,我们应该能够获得表/列的数量/名称...等细节)。

有人知道该怎么做吗?

感谢

+0

为什么用你自己的格式? SQL Server自己的快照有什么问题? – MartW 2010-02-16 09:36:42

+0

您似乎以3种或4种不同的方式提出了此问题。如果您提供有关应用程序的更多详细信息,可能会更容易回答您。你是纯粹对数据库的表模式感兴趣,还是你想要数据? – 2010-02-16 09:42:05

+0

@CodeByMoonlight - team-ferrari22已经问过这些 - http://stackoverflow.com/questions/2266211/how-to-convert-snapshot-files-to-any-other-format – 2010-02-16 09:43:17

回答

0

如果你在表和列的名称纯粹是兴趣一个简单的解决办法是查询INFORMATION_SCHEMA.COLUMNS

select * from INFORMATION_SCHEMA.COLUMNS 

您可以将该查询的输出存储在一个文件您选择的格式 - 它应该会提供足够的信息,以便日后可视化表格的结构。

INFORMATION_SCHEMA还包含有关索引,约束等的其他视图,您可以将它们连接在一起以获取数据库结构的更完整图片。它包含在SQL 2000 SP3和所有更高版本中。

或者,如果您有它们,您可以使用来自您的源代码管理系统的数据库的DDL脚本,并解析这些脚本以获取架构的历史视图。

+0

不会“脱机” - 需要一个SQL服务器来执行'SELECT'语句。 – MSalters 2010-02-16 10:03:30

+0

@ MSalters - 也许我应该更清楚 - 我的意思是当数据库在线供以后参考时将数据提取到文件中。 – 2010-02-16 10:24:24

0

我相当确定这实际上是不可能的。

驱动快照的基本机制是写入时复制。 COW允许您制作现有数据的廉价副本,有效地通过在进行实际更改之前不复制数据,然后仅复制修改过的部分。因此,任何未经修改的数据将在原始副本和外观副本之间共享。

数据库快照仅仅是原始版本,而数据库的“当前”状态是COW副本。你不能自己设置它,因为你不能仅仅创建数据库的COW副本。即使你可以制作这样一个拷贝,COW拷贝的整个要点是它是一个拷贝,即以相同的格式。所以它不会以你的格式。

相关问题