如何生成我的数据库脚本?

时间:2011-03-29 18:24:07

标签: sql-server database ssms

我的主要原因是跟踪我的应用程序的数据库架构更改。在SQL Server Management Studio中,我能够生成一个创建数据库的创建脚本,但它不包含任何测试数据。理想情况下,当脚本运行时,它应该删除现有数据库(假设它已经存在),然后使用包含架构更改和测试数据的新脚本重新创建它。

那么如何生成一个脚本来创建一个包含所有表,存储过程,触发器,视图,测试数据等的数据库?

我尝试过使用导入/导出功能,但这并不好,因为它似乎不会复制存储过程。另外,拥有一个脚本会很好,所以我可以使用mercurial跟踪对架构的更改。

我正在使用SQL Server Express 2008 R2和SQL Server Management Studio。

6 个答案:

答案 0 :(得分:25)

您没有提到哪个版本的SQL Server,但在SQL 2008中这很容易

SQL 2008
 展开数据库
 右键单击数据库
选择任务>生成脚本
 生成和    发布对话框将打开
选择您的    对象(即表,过程等)
   单击“设置脚本”上的“下一步”    选项选择高级选项
下    一般选择SCRIPT DROP AND    创造 - 脚本掉落和创造     脚本的数据类型 - 架构和    数据左关闭高级窗口
选择    保存到文件。

答案 1 :(得分:4)

我编写了一个名为SchemaZen的开源命令行实用程序来执行此操作。它比管理工作室的脚本快得多,它的输出更适合版本控制。它支持脚本化架构和数据。

生成脚本运行:

schemazen.exe script --server localhost --database db --scriptDir c:\somedir

然后从脚本运行:

重新创建数据库
schemazen.exe create --server localhost --database db --scriptDir c:\somedir

答案 2 :(得分:1)

注意数据库整理的差异。如果您使用不区分大小写的排序规则在数据库上进行开发,并尝试使用区分大小写的排序规则将SSMS生成的脚本作为数据库运行,则大小写错误将破坏脚本。

答案 3 :(得分:0)

试试Microsoft SQL Server Database Publishing Wizard。这是一个功能强大的灵活工具,用于编写SQL Server的架构/数据。

答案 4 :(得分:0)

我个人使用Microsoft Visual Studio 2010 Database Project和源代码管理存储库(SVN)来跟踪对架构的更改。

答案 5 :(得分:0)

通常我在开始新的开发之前从数据库进行备份。

最好的方法是在需要时恢复备份,我不知道如何通过脚本方式获取它!