我有一个SQL数据库和表,要在另一个SQL Server中复制。我想创建一个在单个脚本中创建数据库和表的SQL脚本。
我可以使用SQL Management Studio为每种情况(数据库和表)创建“创建”脚本,但是我想知道将两个“创建”脚本组合为单个脚本是否足够。
谢谢。
我有一个SQL数据库和表,要在另一个SQL Server中复制。我想创建一个在单个脚本中创建数据库和表的SQL脚本。
我可以使用SQL Management Studio为每种情况(数据库和表)创建“创建”脚本,但是我想知道将两个“创建”脚本组合为单个脚本是否足够。
谢谢。
Answers:
在SQL Server Management Studio中,您可以右键单击要复制的数据库,然后选择“脚本数据库为”,以使该工具创建适当的SQL文件以在另一个服务器上复制该数据库。您可以对要创建的每个表重复此过程,然后将文件合并到单个SQL文件中。在创建数据库之后但在创建任何表之前,请不要忘记添加using语句。
在SQL Server的最新版本中,您可以在SSMS中将其保存在一个文件中。
这将启动一个向导,您可以在其中编写整个数据库或部分脚本。似乎没有执行此操作的T-SQL方法。
尽管Clayton的答案将最终使您到达那里,但在SQL2005 / 2008 / R2 / 2012中,您有一个简单得多的选择:
右键单击数据库,选择Tasks
,然后选择Generate Scripts
,这将启动脚本向导。这使您可以生成单个脚本,该脚本可以重新创建完整的数据库,包括表/索引和约束/存储过程/函数/用户/等。您可以配置许多选项来定制输出,但是大多数选项不言自明。
如果您对默认选项感到满意,则可以在几秒钟内完成整个工作。
如果要重新创建数据库中的数据(作为一系列INSERTS),我还建议您使用SSMS工具包(对于SQL 2008版本免费,对于SQL 2012版本付费)。
在此处可以找到很好的解释:在SQL Server Management Studio中生成脚本
由Ali Issa提供 这是您必须做的:
如果要创建仅生成表(无数据)的脚本,则可以跳过说明的高级部分!
不确定SSMS为什么不考虑执行顺序,却没有考虑执行顺序。对于小型数据库而言,这不是问题,但是如果您的数据库有200个对象怎么办?在那种情况下,执行顺序很重要,因为要完成所有这些任务并不容易。
对于SSMS生成的无序脚本,您可以执行以下操作
a)执行脚本(一些对象将插入一些,不会出现一些错误)
b)从脚本中删除所有已添加到数据库的对象
c)返回a)直到最终执行所有操作
另一种选择是使用第三方工具,例如ApexSQL Script或此线程中已经提到的任何其他工具(SSMS工具包,Red Gate和其他工具)。
所有这些将为您解决依赖关系,并为您节省更多时间。