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


102

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

我可以使用SQL Management Studio为每种情况(数据库和表)创建“创建”脚本,但是我想知道将两个“创建”脚本组合为单个脚本是否足够。

谢谢。


26
您可以更改接受的答案吗?
skolima 2013年

1
@skolima同意,(克莱顿)接受的答案最终将得到结果,但是CJM的答案要快得多
elmer007 '16

Answers:


18

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

在SQL Server的最新版本中,您可以在SSMS中将其保存在一个文件中。

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

这将启动一个向导,您可以在其中编写整个数据库或部分脚本。似乎没有执行此操作的T-SQL方法。

生成SQL Server脚本


182
继续滚动... CJM的方法好99.99999%
ewitkows 2012年

CJM的答案仍然不够。应用CJM方法后,您还应该应用Shawna Jacobs方法。
Andrzej Martyna

无论如何,以mysql的标准SQL为例?
本杰明·古德克里

378

尽管Clayton的答案将最终使您到达那里,但在SQL2005 / 2008 / R2 / 2012中,您有一个简单得多的选择:

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

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

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


5
太好了,我就是这样做,为我节省了大量时间。
Bill Sambrone 2013年

@CJM我想我几乎爱你!:-P
Piero Alberto

我完全遵循了这些步骤,但是我仍然绝对会收到大量错误,而且我无法纠正它们。有什么帮助吗?
user1789573

我建议您对此发表自己的问题-确保您发布有关所采取的步骤和收到的错误的详细信息。
CJM 2015年

@ user1789573-正如Shawna Jacobs所写-SSMS不在乎依赖项(SSMS devteam感到羞耻!),因此“设计上”会出现大量错误。按照Shawna Jacobs的建议解决SSMS的这一弱点。
Andrzej Martyna

9

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

由Ali Issa提供 这是您必须做的:

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

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


7

不确定SSMS为什么不考虑执行顺序,却没有考虑执行顺序。对于小型数据库而言,这不是问题,但是如果您的数据库有200个对象怎么办?在那种情况下,执行顺序很重要,因为要完成所有这些任务并不容易。

对于SSMS生成的无序脚本,您可以执行以下操作

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

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

c)返回a)直到最终执行所有操作

另一种选择是使用第三方工具,例如ApexSQL Script或此线程中已经提到的任何其他工具(SSMS工具包,Red Gate和其他工具)。

所有这些将为您解决依赖关系,并为您节省更多时间。


1

是的,您可以根据需要将多个SQL语句添加到一个脚本中。只需注意一件事:顺序很重要。创建表之前,不能将其插入表中。您必须先插入主键才能设置外键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.