你目前正处于脱机状态,正在等待 Internet 重新连接

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

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 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 代理代理帐户
创建一个 SQL Server 代理代理帐户。此代理帐户必须使用允许 SQL Server 代理运行作业以创建包的帐户或具有所需的权限的帐户凭据。

此方法解密机密信息的工作,并满足用户的主要要求。但是,此方法可能会因为受限制成功 SSIS 包的用户密钥涉及当前用户和当前的计算机。因此,如果将包移到另一台计算机时,此方法可能仍会失败,即使作业步骤使用正确的代理帐户。

方法 2: 将 SSIS 包的保护级别属性设置为 ServerStorage
SSIS 包的保护级别属性改为 ServerStorage。此设置将包存储在 SQL Server 数据库,并允许通过 SQL Server 数据库角色的访问控制。

方法 3: 将 SSIS 包的保护级别属性设置为 EncryptSensitiveWithPassword
SSIS 包的保护级别属性改为 EncryptSensitiveWithPassword。此设置用于加密的密码。然后可以修改 SQL Server 代理作业步骤命令行以包括此密码。

方法 4: 使用 SSIS 数据包配置文件
使用 SSIS 数据包配置文件来存储敏感信息,然后将这些配置文件存储在受保护的文件夹中。然后可以向 DontSaveSensitive保护级别属性更改,以便包不加密的并不会尝试将机密信息保存到包。当您运行的 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:34End 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 代理的代理服务器

Warning: This article has been translated automatically

属性

文章 ID:918760 - 上次审阅时间:07/16/2013 07:34:00 - 修订版本: 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
反馈