我有一个SQL数据库和表,我想在另一个SQL Server中复制。我想创建一个SQL脚本,在单个脚本中创建数据库和表。
我可以使用SQL Management Studio为每种情况(数据库和表)创建“创建”脚本,但我想知道将“创建”脚本组合到单个脚本中是否足够。
感谢。
答案 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中的一个文件中获取它。
答案 2 :(得分:8)
可在此处找到一个很好的解释:Generate script in SQL Server Management Studio
礼貌Ali Issa 以下是您必须做的事情:
如果您想创建一个只生成表格的脚本(无数据),您可以跳过说明的高级部分!
答案 3 :(得分:6)
不确定SSMS为什么不考虑执行顺序,但事实并非如此。这对于小型数据库来说不是问题,但如果您的数据库有200个对象怎么办?在这种情况下,执行顺序很重要,因为要完成所有这些操作并不容易。
对于SSMS生成的无序脚本,您可以按照
进行操作a)执行脚本(某些对象将被插入,但会有一些错误)
b)从脚本中删除已添加到数据库
的所有对象c)回到a),直到一切都最终被执行
替代选项是使用第三方工具,例如ApexSQL Script或此线程中已提及的任何其他工具(SSMS toolpack,Red Gate等)。
所有这些都将为您处理依赖关系并为您节省更多时间。
答案 4 :(得分:1)
是的,您可以根据需要将多个SQL语句添加到单个脚本中。只需注意一点:订单很重要。在创建它之前,不能插入表中;在插入主键之前,不能设置外键。