我试图找出这是否可行,但到目前为止我还没有找到任何好的解决方案。我想要实现的是编写一个可以克隆数据库但没有存储数据的存储过程。这意味着应包含所有表,视图,约束,键和索引,但不包含任何数据。可以吗?
答案 0 :(得分:5)
当然 - 您的存储过程必须读取系统目录视图以找出数据库中的对象,确定它们的潜在依赖关系,然后创建一个或一组重新创建数据库的SQL脚本,以及执行那些。
这是可能的 - 不是很好,很容易做到。特别是对象之间的依赖关系可能会比第一次遇到眼睛更令人头疼....
你也可以:
使用SQL Server Management Studio之类的东西(如果你在SQL Server上 - 你没有指定)并手动创建脚本,只需在另一台服务器上重新执行它们
使用像Redgate SQL Compare这样的“差异”工具来比较两台服务器并使第二台服务器更新
答案 1 :(得分:0)
在SQL Server中,您可以浏览系统表(sys.tables,sys.columns等)并一次构建一个。它在开始时会非常手动且容易出错,但它应该很快就会变得系统化。
另一种方法是使用SMO在.Net中编写内容。看看这个链接:
http://www.sqlteam.com/article/scripting-database-objects-using-smo-updated
答案 2 :(得分:0)
我已成功使用Microsoft SQL Server数据库发布向导来实现此目的。它非常简单,无需编码。这是一个示例电话:
sqlpubwiz script -d DatabaseName -S ServerName -schemaonly C:\ Projects2 \ Junk \ DatabaseName.sql
我认为默认是创建数据和架构,但您可以使用schemaonly参数。
下载here