生成脚本向导

适用于:SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics Analytics Platform System (PDW)

本文教你使用“生成脚本向导”创建脚本以在 SQL Server、Azure SQL 数据库或 Azure SQL 托管实例的实例之间传输数据库。

可以在本地网络中或从 Azure SQL 为 SQL Server 数据库生成脚本。 生成的脚本可以在 SQL Server 的另一个实例或 Azure SQL 上运行。 您可以为整个数据库创建脚本,或将其限制为特定的对象。

有关介绍如何使用“生成脚本”向导的更详细教程,请参阅教程:“生成脚本”向导

先决条件

源和目标数据库可以位于 Azure SQL 数据库或 Azure SQL 托管实例,或者运行 SQL Server 2005 (9.x) 或更高版本的数据库引擎实例上。

权限

生成脚本的最小权限是原始数据库上 db_ddladmin 固定数据库角色的成员身份。

使用“生成脚本”向导

  1. 对象资源管理器中,展开包含要为其编写脚本的数据库的实例的节点。

  2. 右键单击要生成脚本的数据库,然后依次选择“任务>生成脚本”。

    “生成脚本”向导的屏幕截图。

  3. 完成向导对话框:

“简介”页

本页介绍用于生成脚本的步骤。

不再显示此页 - 下次启动“生成脚本向导”时跳过此页。

“简介”页的屏幕截图。

“选择对象”页

使用此页可选择要包含在该向导生成的脚本中的对象。

“为整个数据库编写脚本”选项 - 选中此选项可以为数据库中的所有对象生成脚本,并添加数据库本身的脚本。

为整个数据库生成脚本的屏幕截图。

选择特定数据库对象 - 选中此选项可以将向导限制为,只为你在数据库中选择的特定对象生成脚本:

  • 数据库对象 - 选择要在脚本中包含的至少一个对象。

  • 全选 - 选中所有可用的复选框。

  • 取消全选 - 清除所有复选框。 必须至少选择一个数据库对象,才能继续操作。

    特定脚本的屏幕截图。

“设置脚本编写选项”页

使用此页可以指定您是否希望向导将脚本保存到您选择的位置。

选项 - 如果您希望向导将脚本保存到您选择的位置,则选择 “将脚本保存到特定位置” 。 您以后可以对数据库引擎的实例或者对 SQL 数据库运行这些脚本。

将脚本保存到特定位置 - 将一个或多个 Transact-SQL 脚本文件保存到指定位置。

“另存为”笔记本的屏幕截图。

  • 另存为笔记本 - 将脚本保存到一个或多个 .sql 文件。 选择浏览按钮 (… ) 可以指定文件的名称和位置。

  • 另存为脚本文件 - 将脚本保存到一个或多个 .sql 文件。 选择浏览按钮 (…) 可以指定文件的名称和位置。 如果已存在同名的文件,请选中 “覆盖现有文件” 复选框以替换该文件。 选中“一个脚本文件” 或“每对象一个脚本文件” 可以指定脚本的生成方式。 选中“Unicode 文本” 或“ANSI 文本” 可以指定应在脚本中使用的文本的类型。

  • 保存到剪贴板 - 将 Transact-SQL 脚本保存到剪贴板。

  • 在新查询窗口中打开 - 在“数据库引擎查询编辑器”窗口中生成脚本。 如果没有打开编辑器窗口,则将打开一个新的编辑器窗口作为脚本的目标。

  • 高级 - 显示“高级选项”对话框,你可以在其中选择高级脚本选项。

“高级脚本编写选项”页

使用此页可以指定希望此向导生成脚本的方式。 此页中提供有许多不同的选项。 如果在 SQL 数据库“数据库引擎类型”中指定的 SQL Server 或版本不支持这些选项,则这些选项将灰显。

高级选项的屏幕截图。

选项 - 通过从每个选项右侧的可用设置列表中选择一个值来指定高级选项。

常规 - 以下选项将应用于整个脚本。

  • ANSI 填充 - 在脚本中包括 ANSI PADDING ON。 默认值为 False

  • 追加到文件 - 值为 True时,此脚本将被添加到在 “设置脚本编写选项” 页上指定的现有脚本的底部。 值为 False时,新脚本将覆盖以前的脚本。 默认值为 False

  • 检查对象是否存在 - 设置为 True 时,将在为 SQL 对象生成 create 语句之前添加存在检查。 例如:表、视图、函数或存储过程。 CREATE 语句包装在 IF 语句中。 如果你知道目标是干净的,脚本会更清晰。 如果你不希望对象存在于目标上,则会收到错误。 默认值为 False

  • 出错时继续编写脚本 - 值为 False 时,将在出现错误时停止编写脚本 。 值为 True 时,将继续编写脚本 。 默认值为 False

  • 将 UDDT 转换为基类型 - 值为 True时,用户定义数据类型 (UDDT) 被转换为用于创建它们的基本数据类型。 如果其中运行脚本的数据库中没有 UDDT,请使用 True。 值为 False时,使用 UDDT。 默认值为 False

  • 生成依赖对象的脚本 - 为执行选定对象的脚本时必须存在的任何对象生成脚本。 “为整个数据库生成脚本”选项默认为 True,“选择具体数据库对象”默认则为 False

  • 包含说明性标头 - 值为 True时,说明性注释将被添加到脚本中,将脚本分成若干个部分,每个对象为一个部分。 默认值为 False

  • 包含 if NOT EXISTS - 值为 True时,脚本包含一个用于检查对象在数据库中是否已经存在的语句,并在对象已经存在的情况下不尝试创建新对象。 默认值为 False

  • 包含系统约束名称 - 值为 False 时,在源数据库上自动命名的约束的默认值将在目标数据库上被自动重命名 。 值为 True时,约束将在源数据库和目标数据库上具有相同名称。

  • 包含不支持的语句 - 值为 False时,脚本不包含选定服务器版本或引擎类型上不支持的对象的语句。 值为 True时,脚本包含不支持的对象。 不支持的对象的每个语句都有注释,指明必须先编辑语句,然后才能对选定 SQL Server 版本或引擎类型运行脚本。 默认值为 False

  • 架构限定对象名称 - 在创建的对象的名称中包括架构名称。 默认值为 True

  • 脚本绑定 - 为绑定默认值和规则对象生成脚本。 默认值为 False。 有关详细信息,请参阅 CREATE DEFAULT (Transact SQL)CREATE RULE (Transact-SQL)

  • “编写排序规则脚本” - 在脚本中包括排序规则信息。 默认值为 False。 有关详细信息,请参阅 排序规则和 Unicode 支持

  • 编写默认值脚本 - 在表列中包括用于设置默认值的默认对象。 默认值为 True。 有关详细信息,请参阅指定列的默认值

  • 编写 DROP 和 CREATE 脚本 - 值为“编写 CREATE 脚本”时,将包括 Transact-SQL 语句以创建对象。 值为“编写 DROP 脚本”时,将包括 Transact-SQL 语句以删除对象。 值为“编写 DROP 和 CREATE 脚本”时,对于为其编写脚本的每个对象,脚本中将包括 Transact-SQL DROP 语句,随后是 CREATE 语句。 默认值为 “编写 CREATE 脚本”

  • 编写扩展属性脚本 - 如果对象具有扩展属性,则在脚本中包括扩展属性。 默认值为 True

  • 为引擎类型编写脚本 - 创建可在 SQL 数据库 或 SQL Server 数据库引擎实例的选定类型上运行的脚本。 在脚本中不包括在指定类型上不支持的对象。 默认类型为源服务器的类型。

  • 为服务器版本编写脚本 - 创建可在选定版本的 SQL Server上运行的脚本。 无法为某一版本的早期版本编写该版本新增功能的脚本。 默认版本为源服务器的版本。

  • 编写登录脚本 - 当要为其编写脚本的对象是数据库用户时,使用此选项可创建用户依赖的登录帐户。 默认值为 False

  • 编写对象级权限脚本 - 包括在数据库中的对象上设置权限的脚本。 默认值为 False

  • 编写统计信息脚本 - 设置为“编写统计信息脚本” 时,此选项将包括 CREATE STATISTICS 语句以在对象上重新创建统计信息。 “编写统计信息和直方图脚本” 选项还会创建直方图信息。 默认值为 “不编写统计信息脚本” 。 有关详细信息,请参阅 CREATE STATISTICS (Transact-SQL)

  • 编写 USE DATABASE 脚本” - 在脚本中添加 USE DATABASE 语句。 若要确保在正确的数据库中创建数据库对象,请包含 USE DATABASE 语句。 如果想在其他数据库使用该脚本,则选择 False 省略 USE DATABASE 语句。 默认值为 True。 有关详细信息,请参阅 USE (Transact-SQL)

  • 要编写脚本的数据的类型 - 选择应编写脚本的内容:“仅限数据” 和/或“仅限架构” 。 默认值为 “仅限架构”

表/视图选项 - 下列选项仅应用于表或视图的脚本。

  • 编写更改跟踪的脚本 - 如果在源数据库或源数据库中的表上启用了“编写更改跟踪的脚本”选项,则编写更改跟踪的脚本。 默认值为 False。 有关详细信息,请参阅关于更改跟踪 (SQL Server)

  • 编写 CHECK 约束脚本 - 在脚本中添加 CHECK 约束 CHECK。 默认值为 TrueCHECK 约束要求输入表中的数据满足某些指定的条件。 有关详细信息,请参阅 Unique 约束和 check 约束

  • 编写数据压缩选项的脚本” - 如果在源数据库或源数据库中的表上配置了编写数据压缩选项的脚本选项,则编写数据压缩选项的脚本。 有关详细信息,请参阅数据压缩。 默认值为 False

  • 编写外键脚本 - 将外键添加到脚本中。 默认值为 True。 外键可指示和强制保持表间的关系。

  • 编写全文检索脚本 - 编写创建全文检索的脚本。 默认值为 False

  • 编写索引脚本 - 编写创建索引的脚本。 “为整个数据库生成脚本”选项默认为 True,“选择具体数据库对象”默认则为 False。 索引有助于快速查找数据。

  • 编写主键脚本 - 编写对表创建主键的脚本。 默认值为 True。 主键可唯一标识表的每一行。

  • 编写触发器脚本 - 编写对表创建 DML 触发器的脚本。 默认值为 False。 DML 触发器是当数据库服务器中发生数据操作语言 (DML) 事件时要执行的操作。 有关详细信息,请参阅 DML Triggers

  • 编写唯一键脚本 - 编写对表创建唯一键的脚本。 唯一键可防止输入重复的数据。 默认值为 True。 有关详细信息,请参阅 Unique 约束和 check 约束

“摘要”页

GS 摘要的屏幕截图。

此页汇总了您在此向导中所选的选项。 若要更改选项,请选择“上一步” 。 若要开始生成脚本,请选择“下一步”。

检查所做选择 - 显示您在向导的每一页中所做的选择。 展开某个节点可看到在相应页中选择的选项。

“保存脚本”页

使用此页可以在向导出现时监视其进度。

详细信息 - 查看 “操作” 列可以看到向导的进度。 向导生成脚本后,会将脚本保存到文件中。 在上述各步骤完成后,选择“结果”列中的值可以看到相应步骤的结果。

保存报告 - 选择此选项可以将向导的进度结果保存到文件中。

取消 - 选择此选项可以在完成处理前或出错时关闭向导。

完成 - 选择此选项可以在完成处理后或出错时关闭向导。

保存脚本

“完成”的屏幕截图。

如果所有设置都正确,则配置成功完成。

在 Azure Synapse Analytics 上生成脚本

如果使用“Script As…”生成的语法看起来不像 Azure Synapse Analytics 语法,或如果你收到一条错误消息,则可能需要将 SQL Server Management Studio 中的脚本选项设置为 Azure Synapse Analytics。

如何将默认脚本选项设置为 SQL 数据仓库

为了使用 Azure Synapse Analytics 语法编写对象脚本,请按下列步骤将默认脚本选项设置为 Azure Synapse Analytics :

  1. 依次选择“工具” 和“选项” 。
  2. 选择“SQL Server 对象资源管理器”和“脚本”。
  3. 在“版本”选项下,将“将脚本设置与源匹配”设置为 False。
    1. 将“数据库引擎类型脚本”设置为“Microsoft Azure SQL 数据库版”。
    2. 对于 Azure Synapse Analytics 中的专用 SQL 池,请将“数据库引擎版本脚本”设置为“Microsoft Azure SQL 数据仓库版”。
  4. 选择“确定”

当 SQL 数据仓库不是默认脚本选项时如何为其生成脚本

如果你按之前所示的步骤将 Azure Synapse Analytics 设置为默认脚本选项,则可以忽略这些说明。 但是,如果选择使用不同的默认脚本选项,则可能遇到错误。 要避免错误,请执行以下步骤以便为 Azure Synapse Analytics生成脚本:

  1. 在“对象资源管理器”中,右键单击“数据库”下的专用 SQL 池。
  2. 选择“生成脚本” 。
  3. 选择你要为其编写脚本的对象。
  4. 在“脚本选项” 中,选择“高级” 。 在“常规”下设置:
    1. 数据库引擎类型脚本:Microsoft Azure SQL 数据库 。
    2. 数据库引擎版本的脚本:Microsoft Azure SQL 数据仓库版 。
  5. 依次选择“保存脚本”和“完成”。

系统不会记住第 4 步中设置的选项。 如果想要记住这些选项,请按照 如何将默认脚本选项设置为 SQL 数据仓库中的说明进行操作。