dtutil 实用工具
dtutil 命令提示实用工具用于管理 SQL ServerIntegration Services 包。该实用工具可以复制、移动、删除包,也可以验证包是否存在。可对存储于以下三个位置之一的任何 SSIS 包执行上述操作:MicrosoftSQL Server 数据库、SSIS 包存储区和文件系统。包的存储类型由 /SQL、/FILE 和 /DTS 选项标识。
注意 |
---|
在您连接到 Integration Services 实例时,也可以直观地在 SQL Server Management Studio 中执行由 dtutil 执行的许多操作。有关详细信息,请参阅管理包。 |
这些选项的键入顺序不分先后。竖线字符 ("|") 是 OR 运算符,用于显示可能的值。您必须使用一个由 OR 竖线分隔的选项。
所有选项必须以斜杠 (/) 或减号 (-) 开头。但是,斜杠或减号与选项的文本之间不能包含空格;否则,该命令将失败。
参数必须是用引号括起来的字符串,或是没有包含任何空格的字符串。
用引号引起来的字符串中的双引号表示转义的单引号。
除密码外,其他选项和参数都不区分大小写。
64 位计算机上的安装注意事项
在 64 位计算机上,Integration Services 将安装 dtexec 实用工具 (dtexec.exe) 和 dtutil 实用工具 (dtutil.exe) 的 64 位版本。若要安装这些 Integration Services 工具的 32 位版本,必须在安装过程中选择“客户端工具”或 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)之前,可永久更改变量中路径的顺序。
语法
dtutil /option [value] [/option [value]]...
参数
选项 |
说明 |
---|---|
/? |
显示命令提示符选项。 |
/C[opy] location;destinationPathandPackageName |
指定对 SSIS 包的复制操作。使用此参数需要先使用 /FI、/SQ 或 /DT 选项指定包的位置。然后指定目标位置和目标包名称。destinationPathandPackageName 参数指定 SSIS 包的复制目标。如果目标 location 为 SQL,那么还必须在命令中指定 DestUser、DestPassword 和 DestServer 参数。 如果 Copy 操作的目标处已经有一个包,dtutil 将提示用户确认是否删除该包。回答 Y 将覆盖包,回答 N 将结束程序。如果该命令包含 Quiet 参数,则将不显示任何提示,并覆盖任何现有包。 |
/Dec[rypt] password |
(可选)。设置加载使用密码加密的包时所用的解密密码。 |
/Del[ete] |
删除由 SQL、DTS 或 FILE 选项指定的包。如果 dtutil 无法删除包,则程序将结束。 |
/DestP[assword] password |
指定与 SQL 选项一起使用的密码,用于连接到使用 SQL Server 身份验证的 SQL Server 目标实例。如果在不包含 DTSUSER 选项的命令行中指定 DESTPASSWORD,则将生成错误。
注意
请尽可能使用 Windows 身份验证。.
|
/DestS[erver] server_instance |
指定与任何导致目标被保存到 SQL Server 的操作一起使用的服务器名称。该选项用于在保存 SSIS 包时,标识一个非本地或非默认的服务器。在不包含与 SQL Server 关联的操作的命令行中指定 DESTSERVER 是错误的。SIGN SQL、COPY SQL 或 MOVE SQL 选项的相应命令都可与该选项结合使用。 通过在服务器名中添加反斜杠和实例名称,可以指定 SQL Server 实例名称。 |
/DestU[ser] username |
指定与 SIGN SQL、COPY SQL 和 MOVE SQL 选项一起使用的用户名,以连接到使用 SQL Server 身份验证的 SQL Server 实例。在不包含 SIGN SQL、COPY SQL 或 MOVE SQL 选项的命令行中指定 DESTUSER 是错误的。 |
/Dump process ID |
(可选)使指定进程(dtexec 实用工具或 dtsDebugHost.exe 进程)暂停,并创建调试转储文件 .mdmp 和 .tmp。
注意
若要使用 /Dump 选项,您必须具有调试程序用户权限 (SeDebugPrivilege)。
若要查找要暂停的进程的 process ID,请使用 Windows 任务管理器。 默认情况下,Integration Services 将调试转储文件存储在 <驱动器>:\Program Files\Microsoft SQL Server\100\Shared\ErrorDumps 文件夹中。 有关 dtexec 实用工具和 dtsDebugHost.exe 进程的详细信息,请参阅 dtexec 实用工具和生成、部署和调试自定义对象。 有关调试转储文件的详细信息,请参阅使用调试转储文件。
注意
调试转储文件可能包含敏感信息。使用访问控制列表 (ACL) 来限制对这些文件的访问,或将文件复制到具有受限访问权限的文件夹中。
|
/DT[S] filespec |
指定要对其执行操作的 SSIS 包位于 SSIS 包存储区中。filespec 参数必须包括以 SSIS 包存储区的根开头的文件夹路径。默认情况下,该配置文件中的根文件夹的名称为“MSDB”和“File System”。必须使用双引号分隔包含空间的路径。 如果指定 DT[S] 选项的命令行中还有以下任一选项,则返回 DTEXEC_DTEXECERROR:
|
/En[crypt] {SQL | FILE}; Path;ProtectionLevel[;password] |
(可选)。使用指定的保护级别和密码对加载的包进行加密,并将其保存到 Path 中指定的位置。ProtectionLevel 确定是否需要密码。
ProtectionLevel 选项: 级别 0:提取敏感信息。 级别 1:使用本地用户凭据对敏感信息进行加密。 级别 2:使用必需的密码对敏感信息进行加密。 级别 3:使用必需的密码对包进行加密。 级别 4:使用本地用户凭据对包进行加密。 级别 5:包使用 SQL Server 存储加密。 |
/Ex[ists] |
(可选)。用于确定包是否存在。dtutil 将尝试查找由 SQL、DTS 或 FILE 选项指定的包。如果 dtutil 找不到指定的包,则返回 DTEXEC_DTEXECERROR。 |
/FC[reate] {SQL | DTS};ParentFolderPath;NewFolderName |
(可选)。创建一个新文件夹,该文件夹的名称是在 NewFolderName 中指定的。新文件夹的位置由 ParentFolderPath 指示。 |
/FDe[lete] {SQL | DTS}[;ParentFolderPath;FolderName] |
(可选)。从 SQL Server 或 SSIS 中删除由 FolderName 中的名称指定的文件夹。要删除的文件夹的位置由 ParentFolderPath 指示。 |
/FDi[rectory] {SQL | DTS};FolderPath[;S] |
(可选)。列出 SSIS 或 SQL Server 中的文件夹中的内容(文件夹和包)。可选参数 FolderPath 指定要查看其内容的文件夹。可选参数 S 指定要查看 FolderPath 中所指定文件夹的子文件夹的内容列表。 |
/FE[xists ] {SQL | DTS};FolderPath |
(可选)。验证 SSIS 或 SQL Server 中是否存在指定的文件夹。FolderPath 参数是要验证的文件夹的路径和名称。 |
/Fi[le] filespec |
此选项指定要操作的 SSIS 包位于文件系统中。filespec 值可以是通用命名约定 (UNC) 路径或本地路径。 如果指定 File 选项的命令行中还有以下任一选项,则返回 DTEXEC_DTEXECERROR:
|
/FR[ename] {SQL | DTS} [;ParentFolderPath; OldFolderName;NewFolderName] |
(可选)。重命名 SSIS 或 SQL Server 中的文件夹。ParentFolderPath 是要重命名的文件夹的位置。OldFolderName 是文件夹的当前名称,NewFolderName 是要为文件夹提供的新名称。 |
/H[elp] option |
显示详细的文本帮助,该帮助可以显示 dtutil 的各个选项并说明其用法。该选项参数是可选的。如果包含该参数,则帮助文本将包含有关指定选项的详细信息。以下示例将显示所有选项的帮助: dtutil /H 下列两个示例显示如何使用 /H 选项显示特定选项(本例中为 /Q [uiet] 选项)的详细帮助: dtutil /Help Quiet dtutil /H Q |
/I[DRegenerate] |
为包创建新的 GUID 并更新包 ID 属性。复制包后,包 ID 保持不变;因此,对于两个包,日志文件包含的 GUID 相同。该操作为新复制的包创建新的 GUID,以便将其与原始包区分开。 |
/M[ove] {SQL | File | DTS}; pathandname |
指定对 SSIS 包的移动操作。若要使用该参数,请先使用 /FI、/SQ 或 /DT 选项指定包的位置。然后指定 Move 操作。此操作需要两个由分号分隔的参数:
如果 MOVE 操作的目标处已经有一个包,则 dtutil 将提示您确认是否要覆盖这个包。回答 Y 将覆盖包,回答 N 将结束程序。如果该命令包含 QUIET 选项,则将不显示任何提示,并覆盖任何现有包。 |
/Q[uiet] |
在执行包含 COPY、MOVE 或 SIGN 选项的命令时,停止可能显示的确认提示。如果目标计算机中已经存在与指定包同名的包,或者如果已经对指定包进行了签名,则将显示这些提示。 |
/R[emark] text |
向命令行中添加注释。该注释参数是可选的。如果注释文本包含空格,则文本必须用引号引起来。可以在一个命令行中包含多个 REM 选项。 |
/Si[gn] {SQL | File | DTS}; path; hash |
对 SSIS 包进行签名。此操作使用三个由分号分隔的必要参数:
有关详细信息,请参阅对包进行数字签名。
重要提示
在配置为检查包签名时,Integration Services 仅检查数字签名是否存在、是否有效以及是否来自可信来源。Integration Services 不检查包是否已更改。
|
/SourceP[assword] password |
指定与 SQL 和 SOURCEUSER 选项一起使用的密码,以便可以对存储在 SQL Server 实例(使用 SQL Server 身份验证)的数据库中的 SSIS 包进行检索。在不包含 SOURCEUSER 选项的命令行中指定 SOURCEPASSWORD 是错误的。
注意
请尽可能使用 Windows 身份验证。
|
/SourceS[erver] server_instance |
指定与 SQL 选项一起使用的服务器名称,以便可以检索存储在 SQL Server 中的 SSIS 包。在不包含 SIGN SQL、COPYSQL 或 MOVESQL 选项的命令行中指定 SOURCESERVER 是错误的。 通过在服务器名中添加反斜杠和实例名称,可以指定 SQL Server 实例名称。 |
/SourceU[ser] username |
指定与 SOURCESERVER 选项一起使用的用户名,以便可以对存储在使用 SQL Server 身份验证的 SQL Server 中的 SSIS 包进行检索。在不包含 SIGN SQL、COPY SQL 或 MOVE SQL 选项的命令行中指定 SOURCEUSER 是错误的。
注意
请尽可能使用 Windows 身份验证。
|
/SQ[L] package_path |
指定 SSIS 包的位置。该选项指示包存储在 msdb 数据库中。package_path 参数指定 SSIS 包的路径和名称。文件夹名以反斜杠结尾。 如果指定 SQL 选项的命令行中还有以下任一选项,则返回 DTEXEC_DTEXECERROR:
如果不包含 SOURCEUSERNAME,则使用 Windows 身份验证访问包。仅当存在 SOURCEUSER 时,才允许使用 SOURCEPASSWORD。如果不包含 SOURCEPASSWORD,则使用空密码。
重要提示
不要使用空密码。 请使用强密码。
|
dtutil 退出代码
如果检测到语法错误、使用了错误参数或指定了无效的选项组合,dtutil 将设置退出代码以向您发出警报。否则,该实用工具将报告“操作已成功完成”。下表列出了 dtutil 实用工具在退出时可以设置的值。
值 |
说明 |
---|---|
0 |
已成功执行此实用工具。 |
1 |
此实用工具已失败。 |
4 |
此实用工具找不到请求的包。 |
5 |
此实用工具无法加载请求的包。 |
6 |
此实用工具无法解析命令行,因为它包含语法或语义错误。 |
注释
命令文件或重定向不能与 dtutil 一起使用。
命令行中选项的顺序不分先后。
示例
以下示例详细说明了典型的命令行使用方法。
复制示例
若要将存储在使用 Windows 身份验证的 SQL Server 本地实例中 msdb 数据库的包复制到 SSIS 包存储区,可使用以下语法:
dtutil /SQL srcPackage /COPY DTS;destFolder\destPackage
若要将包从文件系统中的某个位置复制到其他位置,并为副本提供一个不同的名称,可使用以下语法:
dtutil /FILE c:\myPackages\mypackage.dtsx /COPY FILE;c:\myTestPackages\mynewpackage.dtsx
若要将本地文件系统中的包复制到其他计算机上承载的 SQL Server 实例,可使用以下语法:
dtutil /FILE c:\sourcepkg.dtsx /DestServer <servername> /COPY SQL;destpkgname
由于未使用 /DestU[ser] 和 /DestP[assword] 选项,因此假定使用 Windows 身份验证。
若要在复制某个包后为其创建新的 ID,可使用以下语法:
dtutil /I /FILE copiedpkg.dtsx
若要为某特定文件夹中的所有包创建新的 ID,可使用以下语法:
for %%f in (C:\test\SSISPackages\*.dtsx) do dtutil.exe /I /FILE %%f
在命令提示符下键入命令时,使用一个百分号 (%)。如果在批处理文件内使用命令,则使用两个百分号 (%%)。
删除示例
若要删除存储在使用 Windows 身份验证的 SQL Server 实例中的 msdb 数据库中的包,可使用以下语法:
dtutil /SQL delPackage /DELETE
若要删除存储在使用 SQL Server 身份验证的 SQL Server 实例中的 msdb 数据库中的包,可使用以下语法:
dtutil /SQL delPackage /SOURCEUSER srcUserName /SOURCEPASSWORD #8nGs*w7F /DELETE
注意 |
---|
若要从命名服务器中删除包,可包含 SOURCESERVER 选项及其参数。使用该 SQL 选项只能指定服务器。 |
若要删除存储于 SSIS 包存储区中的包,可使用以下语法:
dtutil /DTS delPackage.dtsx /DELETE
若要删除存储在文件系统中的包,可使用以下语法:
dtutil /FILE c:\delPackage.dtsx /DELETE
存在示例
若要确定使用 Windows 身份验证的 SQL Server 本地实例中的 msdb 数据库中是否存在包,可使用以下语法:
dtutil /SQL srcPackage /EXISTS
若要确定使用 SQL Server 身份验证的 SQL Server 本地实例中的 msdb 数据库中是否存在包,可使用以下语法:
dtutil SQL srcPackage /SOURCEUSER srcUserName /SOURCEPASSWORD *hY$d56b /EXISTS
注意 |
---|
若要确定命名服务器上是否存在包,可包含 SOURCESERVER 选项及其参数。使用该 SQL 选项只能指定服务器。 |
若要确定本地包存储区中是否存在包,可使用以下语法:
dtutil /DTS srcPackage.dtsx /EXISTS
若要确定本地文件系统中是否存在包,可使用以下语法:
dtutil /FILE c:\srcPackage.dtsx /EXISTS
移动示例
若要将 SSIS 包存储区中存储的包移动到使用 Windows 身份验证的 SQL Server 本地实例中的 msdb 数据库,可使用以下语法:
dtutil /DTS srcPackage.dtsx /MOVE SQL;destPackage
若要将存储在 SQL Server 本地实例(使用 SQL Server 身份验证)中的 msdb 数据库中的包移动到 SQL Server 其他本地实例(使用 SQL Server 身份验证)中的 msdb 数据库中,可使用以下语法:
dtutil /SQL srcPackage /SOURCEUSER srcUserName /SOURCEPASSWORD $Hj45jhd@X /MOVE SQL;destPackage /DESTUSER destUserName /DESTPASSWORD !38dsFH@v
注意 |
---|
若要将一个命名服务器中的包移动到另一个命名服务器,可包含 SOURCES 和 DESTS 选项及其参数。只能使用 SQL 选项指定服务器。 |
若要移动存储在 SSIS 包存储区中的包,可使用以下语法:
dtutil /DTS srcPackage.dtsx /MOVE DTS;destPackage.dtsx
若要移动存储在文件系统中的包,可使用以下语法:
dtutil /FILE c:\srcPackage.dtsx /MOVE FILE;c:\destPackage.dtsx
签名示例
若要对存储在使用 Windows 身份验证的 SQL Server 本地实例中的 SQL Server 数据库中的包签名,可使用以下语法:
dtutil /FILE srcPackage.dtsx /SIGN FILE;destpkg.dtsx;1767832648918a9d989fdac9819873a91f919
若要查找有关证书的信息,请使用 CertMgr。在 CertMgr 实用工具中选择证书可查看哈希代码,然后单击**“视图”可查看属性。“详细信息”**选项卡提供了有关证书的详细信息。Thumbprint 属性在删除空格后被用作哈希值。
注意 |
---|
此示例中用到的哈希并不是真正的哈希。 |
有关详细信息,请参阅使用 Authenticode 签名和检查代码中的 CertMgr 部分。
加密示例
以下示例使用完全包加密和密码将基于文件的 PackageToEncrypt.dtsx 加密为基于文件的 EncryptedPackage.dts。加密所用的密码是 EncPswd。
dtutil /FILE PackageToEncrypt.dtsx /ENCRYPT file;EncryptedPackage.dtsx;3;EncPswd