在启动 SQL Server 迁移助手(SSMA)控制台应用程序之前,请创建脚本文件。 如果需要,请创建变量值文件和服务器连接文件。
脚本文件包含三个部分:
config:设置控制台应用程序的配置参数。servers:设置源服务器和目标服务器定义。 还可以将这些定义放在单独的服务器连接文件中。script-commands:执行 SSMA 工作流命令。
以下各节详细介绍了每个部分:
配置访问控制台设置
控制台脚本文件显示脚本的配置。
如果在配置节点中指定任何元素,请为所有脚本命令设置全局设置。 若要覆盖全局设置,请在 script-command 节中每个命令内设置这些配置元素。
可以配置以下选项:
输出窗口提供程序:如果将属性
suppress-messages设置为true,控制台不会显示特定于命令的消息。 这些属性包括:destination:指定输出是打印到文件还是stdout。 此属性默认为false。file-name:文件的路径(可选)。suppress-messages:禁止在主机上显示消息。 此属性默认为false。
示例:
<output-providers> <output-window suppress-messages="<true/false>" (optional) destination="<file/stdout>" (optional) file-name="<file-name>" (optional) /> </output-providers>或
<...All commands...> <output-window suppress-messages="<true/false>" (optional) destination="<file/stdout>" (optional) file-name="<file-name>" (optional) /> </...All commands...>数据迁移连接提供程序:指定要用于数据迁移的源或目标服务器。
source-use-last-used指示上次使用的源服务器用于数据迁移。 同样,target-use-last-used指示上次使用的目标服务器用于数据迁移。 使用source-server或target-server属性来指定服务器。只能使用以下属性之一:
-
source-use-last-used="true"(默认值) 或source-server="source_servername" -
target-use-last-used="true"(默认值) 或target-server="target_servername"
示例:
<output-providers> <data-migration-connection source-use-last-used="true" target-server="target_1"/> </output-providers>或
<migrate-data> <data-migration-connection source-server="source_1" target-use-last-used="true"/> </migrate-data>-
用户输入弹出窗口:在控制台从数据库加载对象时处理错误。 用户提供输入模式,如果出现错误,控制台将按用户指定方式继续。
模式包括:
-
ask-user:提示用户继续(yes)或出错(no)。 -
error:控制台显示错误并停止执行。 -
continue:控制台继续执行。
默认模式为
error.示例:
<output-providers> <user-input-popup mode="<ask-user/continue/error>"/> </output-providers>或
<!-- Connect to target database --> <connect-target-database server="target_0"> <user-input-popup mode="<ask-user/continue/error>"/> </connect-target-database>-
重新连接提供程序:设置连接失败时的重新连接设置。 为源服务器和目标服务器设置此选项。
重新连接模式为:
-
reconnect-to-last-used-server:如果连接未处于活动状态,它将尝试重新连接到最多五次使用的最后一台服务器。 -
generate-an-error:如果连接未处于活动状态,系统将生成错误。
默认模式为
generate-an-error.示例:
<output-providers> <reconnect-manager on-source-reconnect="<reconnect-to-last-used-server/generate-an-error>" on-target-reconnect="<reconnect-to-last-used-server/generate-an-error>"/> </output-providers>或
<!--synchronization--> <synchronize-target> <reconnect-manager on-target-reconnect="reconnect-to-last-used-server"/> </synchronize-target>或
<!--data migration--> <migrate-data server="target_0"> <reconnect-manager on-source-reconnect="reconnect-to-last-used-server" on-target-reconnect="generate-an-error"/> </migrate-data>-
转换器覆盖提供程序:使用此设置处理目标元数据库上已存在的对象。 可能的行动包括:
-
error:控制台显示错误并停止执行。 -
overwrite:覆盖现有对象值。 此操作是默认选项。 -
skip:控制台跳过数据库上已存在的对象。 -
ask-user:提示用户输入(yes或no)。
示例:
<output-providers> <object-overwrite action="<error|skip|overwrite|ask-user>"/> </output-providers>或
<convert-schema object-name="ssma.TT1"> <object-overwrite action="<error|skip|overwrite|ask-user>"/> </convert-schema>-
失败的先决条件提供程序:使用此设置处理处理命令所需的任何先决条件。 默认情况下,
strict-mode为false。 如果将其设置为true,系统将因为未满足先决条件而生成一个异常。示例:
<output-providers> <prerequisites strict-mode="<true|false>"/> </output-providers>停止作:若要在中间作期间停止作,请使用 Ctrl+C 键盘快捷方式。 SSMA 控制台等待操作完成,并终止控制台的执行。
如果要立即停止执行,请再次按 Ctrl+C 键盘快捷方式,突然终止 SSMA 控制台应用程序。
进度提供程序:通知每个控制台命令的进度。 默认情况下,此设置处于禁用状态。 进度报告属性包括:
offevery-1%every-2%every-5%every-10%every-20%
示例:
<output-providers> <progress-reporting enable="<true|false>" (optional) report-messages="<true|false>" (optional) report-progress="every-1%|every-2%|every-5%|every-10%|every-20%|off" (optional)/> </output-providers>或
<...All commands...> <progress-reporting enable="<true|false>" (optional) report-messages="<true|false>" (optional) report-progress="every-1%|every-2%|every-5%|every-10%|every-20%|off" (optional)/> </...All commands...>日志详细程度:设置日志详细级别。 此设置对应于 UI 中的 “所有类别” 选项。 默认情况下,日志详细级别为
error。记录器级选项包括:
-
fatal-error:只记录致命错误消息。 -
error:仅记录错误和致命错误消息。 -
warning:记录除调试和信息消息之外的所有级别。 -
info:记录除调试消息之外的所有级别。 -
debug:记录所有级别的消息。
注释
SSMA 在任何级别记录强制消息。
示例:
<output-providers> <log-verbosity level="fatal-error/error/warning/info/debug"/> </output-providers>或
<...All commands...> <log-verbosity level="fatal-error/error/warning/info/debug"/> </...All commands...>-
替代加密密码:如果
true服务器连接文件的服务器定义部分或脚本文件使用明文密码替代存储在受保护存储中的加密密码(如果存在)。 如果未指定明文密码,系统会提示用户输入密码。出现两种情况:
如果替代选项为
false,搜索顺序为“受保护的存储> 脚本文件> 服务器连接文件> 提示用户”。如果替代选项为
true,搜索顺序为脚本文件 > 服务器连接文件 > 提示用户。
示例:
<output-providers> <encrypted-password override="<true/false>"/> </output-providers>
不可配置的选项为:
-
最大重新连接尝试次数:当已建立的连接因网络故障而超时或中断时,服务器需要重新连接。 主机最多允许五次(
5)重试重新连接。 这些重试后,控制台会自动执行重新连接。 自动重新连接功能可减少重新运行脚本的努力。
服务器连接参数
可以在脚本文件或服务器连接文件中定义服务器连接参数。 有关详细信息,请参阅 创建服务器连接文件。
脚本命令
脚本文件包含 XML 格式的迁移工作流命令序列。 SSMA 控制台应用程序按照脚本文件中显示的命令顺序处理迁移。
例如,Access 数据库中特定表的典型数据迁移遵循:数据库 > 表的层次结构。
脚本文件中的所有命令成功执行时,SSMA 控制台应用程序将退出并向用户返回控制权。 脚本文件的内容或多或少是静态的,变量信息包含在 “创建变量值”文件 或脚本文件中的一个单独的节中,用于变量值。
示例:
<!--Sample of script file commands -->
<ssma-script-file>
<script-commands>
<create-new-project project-folder="$project_folder$"
project-name="$project_name$"
overwrite-if-exists="true"/>
<connect-source-database server="source_2"/>
<save-project/>
<close-project/>
</script-commands>
</ssma-script-file>
产品目录的示例控制台脚本文件夹提供包含三个脚本文件的模板(用于执行各种方案)、变量值文件和服务器连接文件:
AssessmentReportGenerationSample.xmlConversionAndDataMigrationSample.xmlVariableValueFileSample.xmlServersConnectionFileSample.xml
更改相关性参数后,可以执行模板。
有关脚本命令的完整列表,请参阅 “执行 SSMA 控制台”。
脚本文件验证
可以在A2SSConsoleScriptSchema.xsd文件夹中根据Schemas架构定义文件验证您的脚本文件。