dtexec 实用工具(SSIS 工具)
dtexec 命令提示实用工具用于配置和执行 SQL Server Integration Services 包。使用 dtexec 实用工具,可以访问所有包配置和执行功能,如连接、属性、变量、日志和进度指示器等。使用 dtexec 实用工具,可以加载来自以下三个源的包:Microsoft SQL Server 数据库、SSIS 服务和文件系统。
注意 |
---|
当使用 SQL Server 2008 附带的 dtexec 实用工具版本运行 SQL Server 2005 Integration Services (SSIS) 包时,Integration Services 会临时将该包升级到 SQL Server 2008 Integration Services (SSIS)。不过,您不能使用 dtexec 实用工具保存这些升级的更改。有关如何将 SQL Server 2005 包永久地升级到 SQL Server 2008 的详细信息,请参阅升级 Integration Services 包。 |
64 位计算机上的 dtexec(SSIS 工具)的安装注意事项
在 64 位计算机上,Integration Services 将安装 64 位版本的 dtexec 实用工具 (dtexec.exe)。如果需要以 32 位模式运行某些包,则必须安装 32 位版本的 dtexec 实用工具。若要安装 32 位版本的 dtexec 实用工具,必须在安装过程中选择“客户端工具”或 Business Intelligence Development Studio。
默认情况下,同时安装了 64 位和 32 位版本的 Integration Services 命令提示实用工具的 64 位计算机将在命令提示符处运行 32 位版本。运行 32 位版本的原因是:在 PATH 环境变量中,32 位版本的目录路径显示在 64 位版本的目录路径之前。(通常,32 位目录路径是 <驱动器>:\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn,而 64 位目录路径是 <驱动器>:\Program Files\Microsoft SQL Server\100\DTS\Binn。)
注意 |
---|
如果使用 SQL Server 代理来运行此实用工具,则 SQL Server 代理会自动使用 64 位版本的实用工具。SQL Server 代理使用注册表(而非 PATH 环境变量)来找到此实用工具的正确可执行文件。 |
若要确保在命令提示符处运行 64 位版本的实用工具,可以执行以下操作之一:
打开命令提示符窗口,更改到包含 64 位版本的实用工具的目录(<驱动器>:\Program Files\Microsoft SQL Server\100\DTS\Binn),然后从该位置运行此实用工具。
在命令提示符处,通过输入 64 位版本的实用工具的完整路径(<驱动器>:\Program Files\Microsoft SQL Server\100\DTS\Binn)来运行此实用工具。
通过在 PATH 环境变量中将 64 位路径(<驱动器>:\Program Files\Microsoft SQL Server\100\DTS\Binn)置于 32 位路径(<驱动器>:\ Program Files(x86)\Microsoft SQL Server\100\DTS\Binn)之前,可永久更改变量中路径的顺序。
dtexec(SSIS 工具):执行的阶段
该实用工具的执行过程经历四个阶段。这些阶段如下所列:
命令选项确定阶段:命令提示符读取选项列表和已指定的参数。如果遇到 /? 或 /HELP 选项,则会跳过所有后续阶段。
包加载阶段:加载 /SQL、/FILE 或 /DTS 选项指定的包。
配置阶段:按以下顺序处理各个选项:
设置包标志、变量和属性的选项。
验证包版本和内部版本的选项。
配置实用工具运行时行为(如报告)的选项。
验证和执行阶段:运行包。如果指定了 /VALIDATE 选项,则验证但不运行包。
dtexec(SSIS 工具):返回的退出代码
运行包时,dtexec 可能会返回退出代码。使用该退出代码填充 ERRORLEVEL 变量,然后可以在批处理文件的条件语句或分支逻辑中测试该变量的值。下表列出了 dtexec 实用工具退出时可以设置的值。
值 |
说明 |
---|---|
0 |
已成功执行包。 |
1 |
包失败。 |
3 |
用户取消了包。 |
4 |
实用工具找不到请求的包。无法找到包。 |
5 |
实用工具无法加载请求的包。无法加载包。 |
6 |
实用工具的命令行中有内部语法错误或语义错误。 |
dtexec(SSIS 工具):语法和规则
所有选项必须以斜杠 (/) 或减号 (-) 开头。此处显示的选项以斜杠 (/) 开始,但可用减号 (-) 替换。
如果参数包含空格,则必须用引号将该参数引起来。如果没有使用引号将参数引起来,则该参数不能包含空格。
用引号引起来的字符串中的双引号表示转义单引号。
除密码外,其他选项和参数都不区分大小写。
从 xp_cmdshell 中使用 dtexec(SSIS 工具)
可以从 xp_cmdshell 提示符下运行 dtexec。以下示例显示如何运行名为 UpsertData.dtsx 的包并忽略返回代码:
EXEC xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'
以下示例显示如何运行相同的包并捕获返回代码:
DECLARE @returncode int
EXEC @returncode = xp_cmdshell 'dtexec /f "C:\UpsertData.dtsx"'
重要提示 |
---|
在 Microsoft SQL Server 中,默认情况下,新安装中将禁用 xp_cmdshell 选项。运行 sp_configure 系统存储过程可以启用此选项。有关详细信息,请参阅 xp_cmdshell 选项。 |
语法
dtexec /option [value] [/option [value]]...
参数
若要了解用于 SQL Server 2000dtsrun 实用工具的命令提示符选项如何映射到用于 SQL Serverdtexec 实用工具的命令提示符选项,请参阅 将 dtsrun 选项映射到 dtexec 选项。
选项 |
说明 |
---|---|
/? [option_name] |
(可选)。显示命令提示符选项,或显示指定的 option_name 的帮助,然后关闭实用工具。 如果指定 option_name 参数,则 dtexec 将启动 SQL Server 联机丛书并显示 dtexec 实用工具(SSIS 工具) 主题。 |
/CheckF[ile]filespec |
(可选)。将包中的 CheckpointFileName 属性设置为 filespec 中指定的路径和文件。重新启动包时将使用此文件。如果指定了该选项并且未提供文件名值,则包的 CheckpointFileName 将被设置为空字符串。如果不指定该选项,则保留包中的值。 |
/CheckP[ointing]{on\off} |
(可选)。设置一个值,用于确定包执行期间包是否使用检查点。值 on 指定要重新运行失败的包。重新运行失败的包时,运行时引擎将使用检查点文件,以便从失败点重新启动包。 如果声明该选项时未提供值,则默认值为“on”。如果值设置为“on”,但找不到检查点文件,则包执行将失败。如果不指定该选项,则保留包中设置的值。有关详细信息,请参阅通过使用检查点重新启动失败的包。 dtexec 的 /CheckPointing on 选项等效于将包的 SaveCheckpoints 属性设置为 True,并将 CheckpointUsage 属性设置为“Always”。 |
/Com[mandFile]filespec |
(可选)。指定在实用工具的命令选项确定阶段,打开 filespec 中指定的文件,并读取该文件中的选项,直到在文件中找到 EOF。filespec 是一个文本文件,它包含其他 dtexec 命令选项。filespec 参数指定与包执行关联的命令文件的文件名和路径。 |
/Conf[igFile]filespec |
(可选)。指定要从中提取值的配置文件。使用该选项,可以设置一个与设计包时指定的配置不同的运行时配置。可以将不同的配置设置存储在 XML 配置文件中,然后在执行包之前使用 /ConfigFile 选项加载这些设置。 可以使用 /ConfigFile 选项在运行时加载在设计时未指定的其他配置。不过,不能使用 /ConfigFile 选项来替换在设计时也指定了的配置值。若要了解如何应用包配置,请参阅SSIS 包配置和 SQL Server 2008 R2 中 Integration Services 功能的行为更改。 |
/Conn[ection]id_or_name;connection_string [[;id_or_name;connection_string] ] |
(可选)。指定带有指定名称或 GUID 的连接管理器位于包中,并指定了连接字符串。 该选项要求同时指定两个参数:必须在 id_or_name 参数中提供连接管理器名称或 GUID,并且在 connection_string 参数中指定有效的连接字符串。有关详细信息,请参阅 Integration Services 连接。 在运行时,可以使用 /Connection 选项从在设计时指定的位置之外的某个位置加载包配置。这些配置的值随后将替换最初指定的值。不过,可以将 /Connection 选项仅用于使用连接管理器的配置,如 SQL Server 配置。若要了解如何应用包配置,请参阅SSIS 包配置和 SQL Server 2008 R2 中 Integration Services 功能的行为更改。 |
/Cons[oleLog] [[displayoptions];[list_options;src_name_or_guid]...] |
(可选)。在包执行过程中,在控制台显示指定的日志项。如果省略该选项,则不会在控制台中显示日志项。如果指定该选项时不带限制显示的参数,则会显示所有日志项。若要限制控制台显示的日志项,可以使用 displayoptions 参数指定要显示的列,并使用 list_options 参数限制日志项类型。 displayoptions 值包括:
list_options 值包括:
如果在同一个命令提示符中使用了多个 /ConsoleLog 选项,它们的相互影响如下:
有关 /ConsoleLog 选项的若干示例,请参阅备注部分。 |
/D[ts]package_path |
(可选)。从 SSIS 包存储区加载包。package_path 参数指定 SSIS 包的相对路径,从 SSIS 包存储区的根目录开始,包括 SSIS 包的名称。如果 package_path 参数中指定的路径或文件名包含空格,则必须在 package_path 参数两侧加上引号。 /DTS 选项不能与 /File 或 /SQL 选项一起使用。如果指定多个选项,dtexec 将失败。 |
/De[crypt] password |
(可选)。设置加载使用密码加密的包时所用的解密密码。 |
/Dumperror code |
(可选)在包运行期间发生一个或多个指定事件时,创建调试转储文件 .mdmp 和 .tmp。error code 参数指定将触发系统创建调试转储文件的事件代码类型:错误、警告或信息。若要指定多个事件代码,请用分号 (;) 分隔每个 error code 参数。 默认情况下,Integration Services 将调试转储文件存储在 <驱动器>:\Program Files\Microsoft SQL Server\100\Shared\ErrorDumps 文件夹中。
注意
调试转储文件可能包含敏感信息。使用访问控制列表 (ACL) 来限制对这些文件的访问,或将文件复制到具有受限访问权限的文件夹中。例如,在将调试文件发送给 Microsoft 支持服务部门之前,建议您删除所有敏感信息或机密信息。
若要将此选项应用到 dtexec 实用工具运行的所有包,请将 DumpOnCodes REG_SZ 值添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath 注册表项。DumpOnCodes 中的数据值指定将触发系统创建调试转储文件的错误代码或代码。多个错误代码必须以分号 (;) 分隔。 如果将 DumpOnCodes 值添加到注册表项,并使用 /Dump 选项,系统将创建基于这两个设置的调试转储文件。 有关调试转储文件的详细信息,请参阅使用调试转储文件。 |
/DumpOnError |
(可选)在包运行期间发生任意错误时,创建调试转储文件 .mdmp 和 .tmp。 默认情况下,Integration Services 将调试转储文件存储在 <驱动器>:\Program Files\Microsoft SQL Server\100\Shared\ErrorDumps 文件夹中。
注意
调试转储文件可能包含敏感信息。使用访问控制列表 (ACL) 来限制对这些文件的访问,或将文件复制到具有受限访问权限的文件夹中。例如,在将调试文件发送给 Microsoft 支持服务部门之前,建议您删除所有敏感信息或机密信息。
若要将此选项应用到 dtexec 实用工具运行的所有包,请将 DumpOnError REG_DWORD 值添加到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath 注册表项。DumpOnError REG_DWORD 值确定 /DumpOnError 选项是否需要与 dtexec 实用工具一起使用:
有关调试转储文件的详细信息,请参阅使用调试转储文件。 |
/F[ile]filespec |
(可选)。加载保存在文件系统中的包。filespec 参数指定包的路径和文件名。可以将路径指定为通用命名约定 (UNC) 路径或本地路径。如果 filespec 参数中指定的路径或文件名包含空格,则必须在 filespec 参数两侧加上引号。 /File 选项不能与 /DTS 或 /SQL 选项一起使用。如果指定多个选项,dtexec 将失败。 |
/H[elp] [option_name] |
(可选)。显示选项的帮助,或显示指定的 option_name 的帮助,同时关闭实用工具。 如果指定 option_name 参数,则 dtexec 将启动 SQL Server 联机丛书并显示 dtexec 实用工具(SSIS 工具) 主题。 |
/L[ogger]classid_orprogid;configstring |
(可选)。将一个或多个日志提供程序与 SSIS 包的执行关联。classid_orprogid 参数指定日志提供程序,可以指定为类 GUID。configstring 是用于配置日志提供程序的字符串。 以下列表显示了可用的日志提供程序:
|
/M[axConcurrent]concurrent_executables |
(可选)。指定包可以同时执行的可执行文件数。指定的值必须是非负整数或 -1。如果值为 -1,则表示 SSIS 所允许的最大并发运行可执行文件数等于执行包的计算机上的处理器总数加二。 |
/P[assword]password |
(可选)。允许检索受 SQL Server 身份验证保护的包。该选项与 /User 选项一起使用。如果省略 /Password 选项并使用 /User 选项,则使用空白密码。password 值可以用引号引起来。
安全说明
请尽可能使用 Windows 身份验证。
|
/Remcomment |
(可选)。在命令提示符或命令文件中包含注释。该参数可选。comment 的值是字符串,必须用引号引起来或不含空格。如果未指定参数,将插入一个空行。在命令选项确定阶段,将放弃 comment 值。 |
/Rep[orting]level [;event_guid_or_name[;event_guid_or_name[...]] |
(可选)。指定要报告的消息类型。level 可用的报告选项如下: N 无报告。 E 报告错误。 W 报告警告。 I 报告信息性消息。 C 报告自定义事件。 D 报告数据流任务事件。 P 报告进度。 V 详细报告。 V 和 N 参数与所有其他参数互相排斥,必须单独指定。如果不指定 /Reporting 选项,则默认级别为 E(错误)、W(警告)和 P(进度)。 所有事件前都有一个格式为“YY/MM/DD HH:MM:SS”的时间戳以及一个 GUID 或友好名称(如果可用)。 可选参数 event_guid_or_name 是日志提供程序的异常列表。该异常指定本应记录但却未记录的事件。 如果默认情况下通常不记录某个事件,则不必排除该事件。 |
/Res[tart] {deny | force | ifPossible} |
(可选)。为包的 CheckpointUsage 属性指定新值。各参数的含义如下: Deny 将 CheckpointUsage 属性设置为 DTSCU_NEVER。 Force 将 CheckpointUsage 属性设置为 DTSCU_ALWAYS。 ifPossible 将 CheckpointUsage 属性设置为 DTSCU_IFEXISTS。 如果不指定值,则使用默认值 force。 |
/SetpropertyPath;value |
(可选)。覆盖包中变量、属性、容器、日志提供程序、Foreach 枚举器或连接的配置。使用此选项时,/Set 可将 propertyPath 参数更改为指定的值。可以指定多个 /Set 选项。 可以通过运行包配置向导确定 propertyPath 的值。选定项的路径会显示在最后一个“完成向导”页中,可以进行复制和粘贴。如果仅以此目的使用该向导,则可以在复制路径后取消它。 下面是执行包并为变量提供新值的示例: dtexec /f mypackage.dtsx /set \package.variables[myvariable].Value;myvalue 可以使用 /Set 选项更改自其加载包配置的位置但是,不能使用 /Set 选项覆盖设计时的配置中所指定的值。若要了解如何应用包配置,请参阅SSIS 包配置和 SQL Server 2008 R2 中 Integration Services 功能的行为更改。 |
/Ser[ver]server |
(可选)。指定了 /SQL 或 /DTS 选项时,此选项可以指定从中检索包的服务器的名称。如果省略 /Server 选项并指定 /SQL 或 /DTS 选项,则尝试对本地服务器执行包。server_instance 值可以用引号引起来。 |
/SQ[L]package_path |
加载一个存储在 SQL Server 中的包。package_path 参数指定要检索的包的名称。如果文件夹包含在路径中,则文件夹将以反斜杠(\)结束。package_path 值可以用引号引起来。如果 package_path 参数中指定的路径或文件名包含空格,则必须在 package_path 参数两侧加上引号。 可以将 /User、/Password 和 /Server 选项与 /SQL 选项一起使用。 如果省略 /User 选项,则使用 Windows 身份验证来访问包。如果使用 /User 选项,指定的 /User 登录名将与 SQL Server 身份验证相关联。 /Password 选项仅与 /User 选项一起使用。如果使用 /Password 选项,则使用提供的用户名和密码信息访问包。如果省略 /Password 选项,则使用空密码。
安全说明
请尽可能使用 Windows 身份验证。
如果省略 /Server 选项,则假定使用 SQL Server 的默认本地实例。 /SQL 选项不能与 /DTS 或 /File 选项一起使用。如果指定多个选项,dtexec 将失败。 |
/Su[m] |
(可选)。显示一个递增计数器,其中包含下一个组件将接收的行数。 |
/U[ser]user_name |
(可选)。允许检索受 SQL Server 身份验证保护的包。仅当指定了 /SQL 选项时才使用此选项。user_name 值可以用引号引起来。
安全说明
请尽可能使用 Windows 身份验证。
|
/Va[lidate] |
(可选)。在验证阶段之后停止执行包,而不实际运行包。如果在验证期间使用 /WarnAsError 选项,则会导致 dtexec 将警告视为错误,因此使得包在验证期间出现警告时失败。 |
/VerifyB[uild]major[;minor[;build]] |
(可选)。根据验证阶段在 major、minor 和 build 参数中指定的内部版本号,验证包的内部版本号。如果出现不匹配,则将不执行包。 这些值是长整数。此参数可以使用以下三种格式之一,其中必须要有 major 的值:
|
/VerifyP[ackageID]packageID |
(可选)。通过将要执行的包的 GUID 与 package_id 参数中指定的值进行比较,来验证该 GUID。 |
/VerifyS[igned] |
(可选)。导致 Integration Services 检查包的数字签名。如果包未签名或签名无效,则包将失败。有关详细信息,请参阅对包进行数字签名。
重要提示
在配置为检查包签名时,Integration Services 仅检查数字签名是否存在、是否有效以及是否来自可信来源。Integration Services 不检查包是否已更改。
注意
可选的 BlockedSignatureStates 注册表值可指定比在 Business Intelligence Development Studio 中或 dtexec 命令行设置的数字签名选项限制性更强的设置。在这种情况下,限制性更强的注册表设置将覆盖其他设置。
|
/VerifyV[ersionID]versionID |
(可选)。通过将要执行的包的版本 GUID 与包验证阶段 version_id 参数中指定的值进行比较,来验证该 GUID。 |
/VLog[Filespec] |
(可选)。将所有 Integration Services 包事件写入设计包时已启用的日志提供程序。若要让 Integration Services 启用文本文件的日志提供程序并将日志事件写入指定的文本文件,请将路径和文件名包括为 Filespec 参数。 如果不包括 Filespec 参数,Integration Services 将不会为文本文件启用日志提供程序。Integration Services 仅将日志事件写入设计包时已启用的日志提供程序。 |
/W[arnAsError] |
(可选)。导致包将警告视为错误,使得包在验证期间出现警告时失败。如果验证期间无警告并且未指定 /Validate 选项,则执行包。 |
/X86 |
(可选)。使 SQL Server 代理在 64 位计算机上以 32 位模式运行包。满足下列条件时此选项由 SQL Server 代理设置:
您也可通过使用存储过程或 SQL Server 管理对象 (SMO) 以编程方式创建此作业,从而为 SQL Server 代理作业步骤设置此选项。 此选项仅由 SQL Server 代理使用。如果在命令提示符下运行 dtexec 实用工具则会忽略此选项。 |
注释
命令选项的指定顺序可以影响包的执行方式:
选项的处理顺序与其在命令行中出现的顺序一致。命令文件的读取顺序与其在命令行中出现的顺序一致。命令文件中的命令的处理顺序也与其出现的顺序一致。
如果在同一个命令行语句中多次出现相同的选项、参数或变量,则优先执行该选项的最后一个实例。
/Set 和 /ConfigFile 选项将按其出现的顺序进行处理。
dtexec(SSIS 工具):示例
运行 SSIS 包
若要使用 Windows 身份验证执行保存到 SQL Server 的 SSIS 包,可使用以下代码:
dtexec /sq pkgOne /ser productionServer
若要执行保存到 SSIS 包存储区的“文件系统”文件夹中的 SSIS 包,请使用以下代码:
dtexec /dts "\File System\MyPackage"
若要验证使用 Windows 身份验证并保存在 SQL Server 中的包但不执行该包,可使用以下代码:
dtexec /sq pkgOne /ser productionServer /va
若要执行保存在文件系统中的 SSIS 包,可使用以下代码:
dtexec /f "c:\pkgOne.dtsx"
若要执行保存在文件系统中的 SSIS 包并指定日志选项,可使用以下代码:
dtexec /f "c:\pkgOne.dtsx" /l "DTS.LogProviderTextFile;c:\log.txt"
若要执行使用 Windows 身份验证并保存至 SQL Server 的默认本地实例的包,并在执行前查看其版本,可使用以下代码:
dtexec /sq pkgOne /verifyv {c200e360-38c5-11c5-11ce-ae62-08002b2b79ef}
若要执行保存在文件系统中并在外部配置的 SSIS 包,可使用以下代码:
dtexec /f "c:\pkgOne.dtsx" /conf "c:\pkgOneConfig.cfg"
注意 |
---|
如果路径或文件名包含空格,则 /SQL、/DTS 或 /FILE 选项的 package_path 或 filespec 参数必须用引号引起来。如果没有使用引号将参数引起来,则该参数不能包含空格。 |
日志记录选项
如果有三种日志项类型 A、B 和 C,以下不带参数的 ConsoleLog 选项可以显示所有三种日志类型和所有字段:
/CONSOLELOG
以下选项显示所有日志类型,但只显示 Name 和 Message 列:
/CONSOLELOG NM
以下选项仅显示日志项类型 A 的所有列:
/CONSOLELOG I;LogEntryTypeA
以下选项仅显示日志项类型 A 的 Name 和 Message 列:
/CONSOLELOG NM;I;LogEntryTypeA
以下选项显示日志项类型 A 和 B 的日志项:
/CONSOLELOG I;LogEntryTypeA;LogEntryTypeB
可以使用多个 ConsoleLog 选项来获得相同的结果:
/CONSOLELOG I;LogEntryTypeA /CONSOLELOG I;LogEntryTypeB
如果使用不带参数的 ConsoleLog 选项,将显示所有字段。包含 list_options 参数会导致以下示例仅显示日志项类型 A 和所有字段:
/CONSOLELOG NM;I;LogEntryTypeA /CONSOLELOG
以下示例可以显示除日志项类型 A 以外的所有日志项,即显示日志项类型 B 和 C:
/CONSOLELOG E;LogEntryTypeA
以下示例通过使用多个 ConsoleLog 选项和一个排除条件可获得相同的结果:
/CONSOLELOG E;LogEntryTypeA /CONSOLELOG
/CONSOLELOG E;LogEntryTypeA /CONSOLELOG E;LogEntryTypeA
/CONSOLELOG E;LogEntryTypeA;LogEntryTypeA
以下示例不显示日志消息,因为一个日志文件类型同时出现在包含列表和排除列表中时,该类型将被排除。
/CONSOLELOG E;LogEntryTypeA /CONSOLELOG I;LogEntryTypeA
SET 选项
以下示例显示如何使用 /SET 选项。从命令行启动包时,使用该选项可以更改任何包属性或变量的值。
/SET \package\DataFlowTask.Variables[User::MyVariable].Value;newValue
|