我的主要原因是跟踪我的应用程序的数据库架构更改。在SQL Server Management Studio中,我能够生成一个创建数据库的创建脚本,但它不包含任何测试数据。理想情况下,当脚本运行时,它应该删除现有数据库(假设它已经存在),然后使用包含架构更改和测试数据的新脚本重新创建它。
那么如何生成一个脚本来创建一个包含所有表,存储过程,触发器,视图,测试数据等的数据库?
我尝试过使用导入/导出功能,但这并不好,因为它似乎不会复制存储过程。另外,拥有一个脚本会很好,所以我可以使用mercurial跟踪对架构的更改。
我正在使用SQL Server Express 2008 R2和SQL Server Management Studio。
答案 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)
通常我在开始新的开发之前从数据库进行备份。
最好的方法是在需要时恢复备份,我不知道如何通过脚本方式获取它!