Encrypt

dtutil 命令提示实用工具用于管理 SQL Server Integration Services 包。 该实用工具可以复制、移动、删除包,也可以验证包是否存在。 可对存储于以下三个位置之一的任何 SSIS 包执行上述操作:Microsoft SQL Server 数据库、SSIS 包存储区和文件系统。 如果此实用工具要访问存储在 msdb中的包,命令提示符可能要求输入用户名和密码。 如果 SQL Server 实例使用 SQL Server 身份验证,则命令提示符要求输入用户名和密码。 如果缺少用户名,dtutil 将尝试使用 Windows 身份验证登录到 SQL Server。 包的存储类型由 /SQL/FILE/DTS 选项标识。

dtutil 命令提示实用工具不支持使用命令文件或重定向。

dtutil 命令提示实用工具包含下列功能:

  • 命令提示符中的注释,使命令提示符操作可自行记录且更易于理解。

  • 覆盖保护,用于复制或移动包时在覆盖现有的包之前提示确认。

  • 控制台帮助,用于提供有关 dtutil命令选项的信息。

注意

在你连接到 Integration Services 实例时,也可以直观地在 SQL Server Management Studio 中执行由 dtutil 执行的许多操作。 有关详细信息,请参阅包管理(SSIS 服务)

这些选项的键入顺序不分先后。 竖线字符 ("|") 是 OR 运算符,用于显示可能的值。 您必须使用一个由 OR 竖线分隔的选项。

所有选项必须以斜杠 (/) 或减号 (-) 开头。 但是,斜杠或减号与选项的文本之间不能包含空格;否则,该命令将失败。

参数必须是用引号括起来的字符串,或是没有包含任何空格的字符串。

用引号引起来的字符串中的双引号表示转义的单引号。

除密码外,其他选项和参数都不区分大小写。

64 位计算机上的安装注意事项

在 64 位计算机上,Integration Services 将安装 64 位版本的 dtexec 实用工具 (dtexec.exe) 和 dtutil 实用工具 (dtutil.exe)。 若要安装这些 Integration Services 工具的 32 位版本,必须在安装过程中选择“客户端工具”或 SQL Server Data Tools (SSDT)。

默认情况下,同时安装了 64 位和 32 位版本的 Integration Services 命令提示实用工具的 64 位计算机将在命令提示符处运行 32 位版本。 运行 32 位版本的原因是:在 PATH 环境变量中,32 位版本的目录路径显示在 64 位版本的目录路径之前。 (通常,32 位目录路径为<drive>:\Program Files(x86)\Microsoft SQL Server\120\DTS\Binn,而 64 位目录路径为< drive>:\Program Files\Microsoft SQL Server\120\DTS\Binn。

注意

如果使用 SQL Server 代理来运行此实用工具,则 SQL Server 代理会自动使用 64 位版本的实用工具。 SQL Server 代理使用注册表(而非 PATH 环境变量)来找到此实用工具的正确可执行文件。

若要确保在命令提示符处运行 64 位版本的实用工具,可以执行以下操作之一:

  • 打开命令提示符窗口,更改为包含 64 位版本的实用工具 的目录(<drive>:\Program Files\Microsoft SQL Server\120\DTS\Binn),然后从该位置运行该实用工具。

  • 在命令提示符处,通过将完整路径(<drive>:\Program Files\Microsoft SQL Server\120\DTS\Binn)输入到该实用工具的 64 位版本来运行该实用工具。

  • 通过将 64 位路径(drive:\Program Files\Microsoft SQL Server\120\DTS\Binn)放在变量中的 32 位路径(<drive>>:\ Program Files(x86)\Microsoft SQL Server\120\DTS\Binn)之前,永久更改 PATH 环境变量中路径的顺序。<

语法

  
dtutil /option [value] [/option [value]]...  

参数

选项 说明
/? 显示命令提示符选项。
/C[opy] location;destinationPathandPackageName 指定对 SSIS 包的复制操作。 使用此参数需要先使用 /FI/SQ/DT 选项指定包的位置。 然后指定目标位置和目标包名称。 destinationPathandPackageName 参数指定 SSIS 包的复制目标。 如果目标位置为,还必须在命令中指定 DestUserDestPasswordDestServer 参数。SQL

Copy当操作在目标处遇到现有包时,dtutil 会提示用户确认删除包。 回答 Y 将覆盖包,回答 N 将结束程序。 如果该命令包含 Quiet 参数,则将不显示任何提示,并覆盖任何现有包。
/Dec[rypt] password (可选)。 设置加载使用密码加密的包时所用的解密密码。
/Del[ete] 删除由 SQLDTSFILE 选项指定的包。 如果 dtutil 无法删除包,则程序将结束。
/DestP[assword] password 指定与 SQL 选项一起使用的密码,用于连接到使用 SQL Server 身份验证的 SQL Server 目标实例。 如果在不包含 DESTPASSWORD 选项的命令行中指定 DTSUSER ,则将生成错误。

注意:如果可能,请使用 Windows Authentication。。
/DestS[erver] server_instance 指定与任何导致目标被保存到 SQL Server 的操作一起使用的服务器名称。 该选项用于在保存 SSIS 包时,标识一个非本地或非默认的服务器。 在不包含与 SQL Server 关联的操作的命令行中指定 DESTSERVER 是错误的。 SIGN SQLCOPY SQLMOVE SQL 选项的相应命令都可与该选项结合使用。

通过在服务器名中添加反斜杠和实例名称,可以指定 SQL Server 实例名称。
/DestU[ser] username 指定与 SIGN SQL、COPY SQL 和 MOVE SQL 选项一起使用的用户名,以连接到使用 SQL Server 身份验证的 SQL Server 实例。 在不包含 DESTUSERSIGN SQLCOPY SQL选项的命令行中指定 MOVE SQL 是错误的。
/Dump process ID (可选)使指定进程( dtexec 实用工具或 dtsDebugHost.exe 进程)暂停,并创建调试转储文件 .mdmp 和 .tmp。

请注意:若要使用 /Dump选项,则必须具有“调试程序”用户权限 (SeDebugPrivilege)。

若要查找要暂停的进程的 process ID ,请使用 Windows 任务管理器。

默认情况下,Integration Services 将调试转储文件存储在文件夹中, <驱动器>:\Program Files\Microsoft SQL Server\120\Shared\ErrorDumps。

有关 dtexec 实用工具和 dtsDebugHost.exe 进程的详细信息,请参阅 dtexec UtilityBuilding, Deploying, and Debugging Custom Objects

有关调试转储文件的详细信息,请参阅 Generating Dump Files for Package Execution

请注意:调试转储文件可能包含敏感信息。 使用访问控制列表 (ACL) 来限制对这些文件的访问,或将文件复制到具有受限访问权限的文件夹中。
/DT[S] filespec 指定要对其执行操作的 SSIS 包位于 SSIS 包存储区中。 filespec 参数必须包括以 SSIS 包存储区的根开头的文件夹路径。 默认情况下,该配置文件中的根文件夹的名称为“MSDB”和“File System”。必须使用双引号分隔包含空间的路径。

如果指定 DT[S] 选项的命令行中还有以下任一选项,则返回 DTEXEC_DTEXECERROR:

FILE

SQL

SOURCEUSER

SOURCEPASSWORD

SOURCESERVER
/En[crypt] {SQL | FILE}; Path;ProtectionLevel[;password] (可选)。 使用指定的保护级别和密码对加载的包进行加密,并将其保存到 Path中指定的位置。 ProtectionLevel 确定是否需要密码:
SQL - Path 为目标包名称。
FILE - Path 为包的完全限定路径和文件名。
DTS - 当前不支持该选项。

ProtectionLevel 选项:
级别 0:提取敏感信息。
级别 1:使用本地用户凭据对敏感信息进行加密。
级别 2:使用必需的密码对敏感信息进行加密。
级别 3:使用必需的密码对包进行加密。
级别 4:使用本地用户凭据对包进行加密。
级别 5:包使用 SQL Server 存储加密。
/Ex[ists] (可选)。 用于确定包是否存在。 dtutil 尝试查找用 SQLDTSFILE 选项指定的包。 如果 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:

DTS

SQL

SOURCEUSER

SOURCEPASSWORD

SOURCESERVER
/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 操作。 此操作需要两个由分号分隔的参数:

目标参数可指定 SQLFILEDTSSQL 目标可包含 DESTUSERDESTPASSWORDDESTSERVER 选项。

pathandname 参数指定包位置:SQL 使用包路径和包名称,FILE 使用 UNC 或本地路径,DTS 使用相对于 SSIS 包存储区的根目录的位置。 如果目标为 FILEDTS,则路径参数将不包含文件名, 而使用指定位置的包名称作为文件名。



MOVE 操作在目标处遇到现有包时, dtutil 会提示你确认要覆盖包。 回答 Y 将覆盖包,回答 N 将结束程序。 如果该命令包含 QUIET 选项,则将不显示任何提示,并覆盖任何现有包。
/Q[uiet] 在执行包含 COPYMOVESIGN 选项的命令时,停止可能显示的确认提示。 如果目标计算机中已经存在与指定包同名的包,或者如果已经对指定包进行了签名,则将显示这些提示。
/R[emark] text 向命令行中添加注释。 该注释参数是可选的。 如果注释文本包含空格,则文本必须用引号引起来。 可以在一个命令行中包含多个 REM 选项。
/Si[gn] {SQL | File | DTS}; path; hash 对 SSIS 包进行签名。 此操作使用三个由分号分隔的必要参数:

目标参数可指定 SQLFILEDTS。 SQL 目标可包含 DESTUSERDESTPASSWORDDESTSERVER 选项。

Path 参数指定要操作的包的位置。

Hash 参数指定以长度可变的十六进制字符串表示的证书标识符。



** 重要提示 ** 在配置为检查包签名时,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、COPY、SQL 或 MOVE SQL 选项的命令行中指定 SOURCESERVER 是错误的

通过在服务器名中添加反斜杠和实例名称,可以指定 SQL Server 实例名称。
/SourceU[ser] username 指定与 SOURCESERVER 选项一起使用的用户名称,以便可以检索存储在 SQL Server(使用 SQL Server 身份验证)中的 SSIS 包。 在不包含 SOURCEUSERSIGN SQLCOPY SQL选项的命令行中指定 MOVE SQL 是错误的。

注意:如果可能,请使用 Windows 身份验证。
/SQ[L] package_path 指定 SSIS 包的位置。 该选项指示包存储在 msdb 数据库中。 package_path 参数指定 SSIS 包的路径和名称。 文件夹名以反斜杠结尾。 如果指定 SQL 选项的命令行中还有以下任一选项,则返回 DTEXEC_DTEXECERROR:

DTS

FILE

SQLSQL 选项可能附带以下选项的零个或一个实例:
SOURCEUSER
SOURCEPASSWORD
SOURCESERVER

如果不包含 SOURCEUSERNAME ,则使用 Windows 身份验证来访问包。 仅当存在SOURCEPASSWORD 时,才允许指定 SOURCEUSER 。 如果不包含 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  

注意

若要将一个命名服务器中的包移动到另一个命名服务器,可包含 SOURCESDESTS 选项及其参数。 只能使用 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  

另请参阅

在 SQL Server Data Tools 中运行包