SSIS 包不会运行时调用 SQL Server 代理作业步骤

文章翻译 文章翻译
文章编号: 918760 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

在调用 Microsoft SQL Server 2005年集成服务 (SSI) 包从 SQL Server 代理作业步骤时,不会运行 SSIS 包。但是,如果您没有修改 SSIS 包,它将运行成功 SQL Server 代理之外。

解决方案

要解决此问题,请使用下列方法之一。最合适的方法取决于环境和包已失败的原因。包可能已失败的原因是,如下所示:
  • 用于运行的包下 SQL Server 代理的用户帐户不同于原始包作者。
  • 用户帐户没有必需的权限进行连接,或访问 SSIS 包外部的资源。
在下列情况中可能不会运行该程序包:
  • 当前用户不能解密文件包中的机密信息。如果当前帐户或执行帐户不同于原始包作者和包的保护级别属性设置不允许当前用户解密机密信息的包中,则会发生这种情况。
  • 使用集成的安全性的 SQL Server 连接失败,因为当前用户没有所需的权限。
  • 文件访问失败,因为当前用户没有所需的权限写入到连接管理器访问该文件共享。例如,不使用登录名和密码的文本日志提供程序就会发生这种情况。这种情况下也会发生文件连接管理器,如 SSI 文件系统任务所依赖的任何任务。
  • 基于注册表的 SSIS 数据包配置使用 HKEY_CURRENT_USER 注册表项。HKEY_CURRENT_USER 注册表项因用户而异。
  • 任务或连接管理器要求当前用户帐户具有正确权限。
方法 1: 使用 SQL Server 代理代理帐户

方法 2: 将 SSIS 包的保护级别属性设置为 ServerStorage

方法 3: 将 SSIS 包的保护级别属性设置为 EncryptSensitiveWithPassword

方法 4: 使用 SSIS 数据包配置文件

方法 5: 创建包模板

状态

这种现象是设计使然。

高级的信息

要重现此问题的步骤

  1. 登录的用户身份不是 SQLServer2005SQLAgentUser 组的一部分。例如,您可以创建本地用户。
  2. 创建一个 SSIS 包中,然后再添加 ExecuteSQL 任务。通过使用下列字符串到 msdb 本地文件中使用 OLE DB 连接管理器: Windows 身份验证-SQLSourceType:"直接输入"-SQLStatement:"sp_who"
  3. 运行包,以确保成功运行。
  4. 请注意,保护级别属性设置为 EncryptSensitiveWithPassword。
  5. 创建一个 SQL Server 代理作业和作业步骤。在中 作为运行 列表中单击 SQL Server 代理服务 若要运行的作业步骤。
SQL Server 代理程序作业历史记录中的文本将显示类似于以下信息:

作为用户执行: 域 \ 用户名。包执行失败。该步骤失败。

解密包机密信息

SSIS 包保护级别属性的默认设置是 EncryptSensitiveWithUserKey。保存包时,SSIS 加密只有部分软件包包含标记为"敏感,"(如密码、 用户名和连接字符串的属性。因此,当重新加载包时,当前用户必须满足敏感属性要解密的加密要求。但是,当前用户没有满足加载包的加密要求。在通过 SQL Server 代理作业步骤运行包时,默认的帐户是 SQL Server 代理服务帐户。此默认帐户是很有可能是包作者以外的用户。因此,SQL Server 代理作业步骤可以加载并开始运行的作业步骤,但该软件包将失败,因为它无法完成连接。例如,程序包无法完成 OLE DB 连接或 FTP 连接。包失败,因为它不能解密它必须具有连接的凭据。

重要请考虑开发过程和环境,以确定哪些帐户所需的每台计算机上使用。EncryptSensitiveWithUserKey 属性设置的保护级别是一个功能强大的设置。因为它会导致在第一个复杂的部署情况,不应贴现此设置。当与适当的帐户登录时,您可以加密包。此外可以使用 Dtutil.exe SSIS 命令提示实用工具使用.cmd 文件和 SQL Server 代理命令子系统更改保护级别。例如,请按照下列步骤。因为您可以使用批处理文件和循环中的 Dtutil.exe 实用程序,您可以按照为多个包一次。
  1. 修改您想要使用密码加密的包。
  2. 使用通过 Dtutil.exe 实用程序 操作系统 (cmd Exec) 若要将保护级别属性更改为 EncryptSensitiveWithUserKey 的 SQL Server 代理程序作业步骤。这一过程涉及解密通过使用密码,然后重新加密包的包。用户密钥用于加密该软件包是设置的 SQL Server 代理程序作业步骤作为运行 列表。

    注意由于密钥包含用户名和计算机名,将文件包移动到另一台计算机的效果可能会受到限制。

请确保您掌握详细有关 SSIS 包失败的错误信息

而不是依赖于 SQL Server 代理作业历史记录中有限的详细信息,您可以使用 SSIS 日志记录以确保您具有有关 SSIS 包失败的错误信息。您还可以通过使用 exec 子系统命令而不 SSIS 子系统命令运行包。

有关 SSIS 日志记录

SSIS 日志记录和日志提供程序使您可以捕获有关包执行和失败的详细信息。默认情况下此程序包不记录信息。您必须配置要记录的信息的包。配置要记录的信息的包时,会显示详细的信息,类似于以下。在这种情况下,您将知道它是权限问题:

OnError、 域名、 域名 \ 用户名、 FTP Task,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-88EE-1B58EB431D74},4/28/2006 1: 51: 59 PM,2006 年 4 月 28 日下午 1: 51: 59,-1073573489,0 x,无法连接到 FTP 服务器使用"FTP 连接管理器"。

OnError、 域名、 域名 \ 用户名,执行 SQL Task,{C6C7286D-57D4-4490-B12D-AC9867AE5762},{F5761A49-F2F9-4575-9E2B-B3D381D6E1F3},4/28/2006 4: 07: 00 PM,2006 年 4 月 28 日 4: 07: 00 PM,-1073573396,0 x,无法获取连接"user01.msdb"。连接配置可能不正确或您在此连接上可能没有正确的权限。

有关执行子系统命令和输出信息

通过使用 exec 子系统命令方法,您可以添加详细日志记录到 SSIS 命令行调用 Dtexec.exe SSIS 的命令行可执行文件的交换机的控制台。此外,您可以使用的输出文件的高级的作业功能。您还可以使用 历史记录中包含步骤输出 若要重定向到文件或 SQL Server 代理程序作业历史记录的日志记录信息的选项。

以下是命令行的一个示例:

dtexec.exe /FILE 
"C:\_work\SSISPackages\ProtectionLevelTest\ProtectionLevelTest\AgentTesting.dtsx" /MAXCONCURRENT " -1 
" /CHECKPOINTING OFF  /REPORTING V  /CONSOLELOG NCOSGXMT


/Console 日志记录将返回类似于以下内容的详细信息:

Error: 2006-04-27 18:13:34.76
   Code: 0xC0202009
   Source: AgentTesting Connection manager "(local).msdb"
   Description: An OLE DB error has occurred. Error code: 0x80040E4D.
An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80040E4D  Description: "Login failed for user 'DOMAINNAME\username'.".
End Error


Error: 2006-04-28 13:51:59.19
   Code: 0xC0016016
   Source:  
   Description: Failed to decrypt protected XML node "DTS:Property" with error 0x80070002 "The system cannot find the file specified.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available.
End Error


Log:
     Name: OnError
     Computer: COMPUTERNAME
     Operator: DOMAINNAME\username
     Source Name: Execute SQL Task
     Source GUID: {C6C7286D-57D4-4490-B12D-AC9867AE5762}
     Execution GUID: {7AFE3D9E-5F73-42F0-86FE-5EFE264119C8}
     Message: Failed to acquire connection "(local).msdb". Connection may not be configured correctly or you may not have the right permissions on this connection.
     Start Time: 2006-04-27 18:13:34
     End Time: 2006-04-27 18:13:34
End Log

参考

有关类似问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
904800当您尝试运行 SQL Server 2005 中的 SQL Server 2005 的集成服务包时,您会收到"加载错误"错误信息
有关如何在批处理操作中使用 Dtutil.exe 实用程序的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
906562如何使用 dtutil 实用程序 (Dtutil.exe) 来设置 SQL Server 2005 中的一批的 SQL Server Integration Services (SSI) 包的保护级别
有关如何创建包模板的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
908018如何在 SQL Server 业务智能开发环境中创建包模板


有关 SSIS 包的安全性和保护级别属性的详细信息,请参阅 SQL Server 2005 联机丛书中的"安全注意事项的集成服务"主题。

遗憾的是,用户不知道的默认代理作业步骤设置放在此状态下。有关 SQL Server 代理代理和 SSIS 的详细信息,请参阅 SQL Server 2005 联机丛书中的以下主题:
  • SQL Server 代理中的日程安排执行包
  • 创建 SQL Server 代理的代理服务器

属性

文章编号: 918760 - 最后修改: 2013年7月16日 - 修订: 3.1
这篇文章中的信息适用于:
  • Microsoft SQL Server 2008 Service Pack 1
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2005 Service Pack 3
  • Microsoft SQL Server 2005 Service Pack 2
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
关键字:?
kbsqlsetup kbprb kbsql2005ssis kbsql2005setup kbexpertiseinter kbexpertiseadvanced kbtshoot kbmt KB918760 KbMtzh
机器翻译
重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
点击这里察看该文章的英文版: 918760
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com