创建用于创建数据库和表的SQL脚本

ton*_*ony 98 sql sql-server

我有一个SQL数据库和表,我想在另一个SQL Server中复制.我想创建一个SQL脚本,在单个脚本中创建数据库和表.

我可以为每个案例(数据库和表)使用SQL Management Studio创建"创建"脚本,但我想知道将"创建"脚本组合到单个脚本中是否足够.

谢谢.

CJM*_*CJM 375

虽然Clayton的答案会让你(最终)在SQL2005/2008/R2/2012中有一个更容易的选择:

右键单击数据库,Tasks然后选择,然后Generate Scripts启动脚本向导.这允许您生成可以重新创建完整数据库的单个脚本,包括表/索引和约束/存储过程/函数/用户/等.您可以配置多个选项来自定义输出,但大多数选项都是自解释的.

如果您对默认选项感到满意,则可以在几秒钟内完成整个工作.

如果要在数据库中重新创建数据(作为一系列INSERTS),我还建议使用SSMS工具包(适用于SQL 2008版本,适用于SQL 2012版本的付费).

  • 这很好,我只是做了这件事并为我节省了大量时间. (5认同)

Cla*_*ton 15

在SQL Server Management Studio中,您可以右键单击要复制的数据库,然后选择"脚本数据库为"以使该工具创建相应的SQL文件以在另一台服务器上复制该数据库.您可以为要创建的每个表重复此过程,然后将这些文件合并到一个SQL文件中.在创建数据库之后但在创建任何表之前,不要忘记添加using语句;)

更新2018-06-18在更新版本的SQL Server中,您可以在SSMS中的一个文件中获取此信息.

  1. 右键单击数据库.
  2. 任务
  3. 生成脚本

这将启动一个向导,您可以在其中编写整个数据库或仅部分脚本.似乎没有T-SQL这样做的方法.

生成SQL Server脚本

  • 继续滚动... CJM的方法是99.99999%更好 (181认同)

Hel*_*evo 8

可以在此处找到一个很好的解释:在SQL Server Management Studio中生成脚本

礼貌Ali Isa 这是你要做的:

  1. 右键单击数据库(而不是表)并选择任务 - >生成脚本
  2. 下一步 - >选择所请求的表/表(从选择特定的数据库对象)
  3. 下一步 - >单击高级 - >数据类型到脚本=架构和数据

如果要创建仅生成表(无数据)的脚本,可以跳过说明的高级部分!


小智 6

不确定为什么SSMS没有考虑执行顺序,但事实并非如此.这对于小型数据库来说不是问题,但如果您的数据库有200个对象怎么办?在这种情况下,执行顺序很重要,因为要完成所有这些操作并不容易.

对于SSMS生成的无序脚本,您可以继续关注

a)执行脚本(某些对象将插入一些不会,会有一些错误)

b)从脚本中删除已添加到数据库的所有对象

c)回到a)直到最终都执行完毕

替代选项是使用第三方工具,如ApexSQL Script或此线程中已提到的任何其他工具(SSMS toolpack,Red Gate等).

所有这些都将为您处理依赖关系并为您节省更多时间.