【问题标题】:How can I generate a script of my database as it is?如何按原样生成我的数据库的脚本?
【发布时间】:2011-07-25 12:41:45
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您可以右键单击您的数据库(在 SQL Server 管理工作室上)并选择“生成脚本”。在那里,您可以选择要编写脚本的数据库的各个方面,包括索引、触发器、用户、模式和数据(等等)
  • 也许我只是太密集了,但我已经尝试过了,创建的文件中根本没有数据。
  • 您有很多选择,其中之一是编写数据脚本(默认情况下,此选项为 false)
  • @Lamak 我看不到这样的选择。在“向导”的第二个屏幕上,我有两个单选按钮,“编写整个数据库和所有数据库对象的脚本”或“选择特定的数据库对象”-> 然后我的数据库中有一个项目树。我没有看到任何明确的“数据”选项...
  • 没关系 KD7 的方向是正确的

标签: sql-server database ssms


【解决方案1】:

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

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

【讨论】:

  • 找不到那个我有点尴尬。非常感谢。
  • @Pete - 我不会太尴尬,因为它很隐蔽!这是一个有用的功能,应该在 SSMS 中得到更好的体现。
【解决方案2】:

我编写了一个名为SchemaZen 的开源命令行实用程序来执行此操作。它比管理工作室的脚本要快得多,而且它的输出对版本控制更友好。它支持脚本模式和数据。

要生成脚本运行:

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

然后从脚本运行重新创建数据库:

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

【讨论】:

    【解决方案3】:

    试试Microsoft SQL Server Database Publishing Wizard。这是一个强大而灵活的工具,用于在 SQL Server 中编写模式/数据脚本。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        注意数据库排序规则的差异。如果您在具有不区分大小写排序规则的数据库上进行开发,并尝试针对具有区分大小写排序规则的数据库运行 SSMS 生成的脚本,那么大小写错误将破坏脚本。

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 2011-09-05
            • 2019-04-30
            • 1970-01-01
            • 1970-01-01
            • 2021-12-01
            • 2020-04-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多