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

时间:2011-04-24 14:24:16

标签: sql sql-server

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

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

感谢。

5 个答案:

答案 0 :(得分:370)

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

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

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

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

答案 1 :(得分:9)

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

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

  1. 右键单击数据库。
  2. 任务
  3. 生成脚本
  4. 这将启动一个向导,您可以在其中编写整个数据库或仅部分脚本。似乎没有T-SQL这样做的方法。

    Generate SQL Server Scripts

答案 2 :(得分:8)

可在此处找到一个很好的解释:Generate script in SQL Server Management Studio

礼貌Ali Issa 以下是您必须做的事情:

  1. 右键单击数据库(不是表格)并选择任务 - >生成脚本
  2. 下一步 - >选择所请求的表/表(来自选择的特定数据库对象)
  3. 下一步 - >点击高级 - >脚本=架构和数据的数据类型
  4. 如果您想创建一个只生成表格的脚本(无数据),您可以跳过说明的高级部分!

答案 3 :(得分:6)

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

对于SSMS生成的无序脚本,您可以按照

进行操作

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

b)从脚本中删除已添加到数据库

的所有对象

c)回到a),直到一切都最终被执行

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

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

答案 4 :(得分:1)

是的,您可以根据需要将多个SQL语句添加到单个脚本中。只需注意一点:订单很重要。在创建它之前,不能插入表中;在插入主键之前,不能设置外键。