2012-10-26 101 views
5

我使用dtexec运行SSIS包。这个软件包在我的系统上运行良好。当我创建SQL服务器代理作业以按计划运行包时。程序包运行步骤计划为T-SQL任务,而不是SSIS程序包)。作业报告没有错误,但它甚至不会在服务器上创建输出excel文件@我想要的目标。使用dtexec运行SSIS包

此外,当我在命令shell中单独运行该命令时,它将返回下面显示的错误。间歇性地,它还会在我用来复制文件的FileSystem Task上返回错误,并说源或目标不存在!当BIDS中的相同变量值适用于我时,为什么SQL作业失败?

Started: 7:33:27 PM 
Error: 2012-10-26 19:33:27.60 
    Code: 0xC0016016 
    Source: 
    Description: Failed to decrypt protected XML node "DTS:Password" with error 0 
x8009000B "Key not valid for use in specified state.". You may not be authorized 
to access this information. This error occurs when there is a cryptographic err 
or. Verify that the correct key is available. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC00F9304 
    Source: GICSReport Connection manager "Excel Connection Manager" 
    Description: SSIS Error Code DTS_E_OLEDB_EXCEL_NOT_SUPPORTED: The Excel Conne 
ction Manager is not supported in the 64-bit version of SSIS, as no OLE DB provi 
der is available. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC020801C 
    Source: Data Flow Task Excel Destination [22] 
    Description: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAG 
ER. The AcquireConnection method call to the connection manager "Excel Connecti 
on Manager" failed with error code 0xC00F9304. There may be error messages post 
ed before this with more information on why the AcquireConnection method call fa 
iled. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC0047017 
    Source: Data Flow Task SSIS.Pipeline 
    Description: component "Excel Destination" (22) failed validation and returne 
d error code 0xC020801C. 
End Error 
Error: 2012-10-26 19:33:27.78 
    Code: 0xC004700C 
    Source: Data Flow Task SSIS.Pipeline 
    Description: One or more component failed validation. 
End Error 
Error: 2012-10-26 19:33:27.79 
    Code: 0xC0024107 
    Source: Data Flow Task 
    Description: There were errors during task validation. 
End Error 
DTExec: The package execution returned DTSER_FAILURE (1). 
Started: 7:33:27 PM 
Finished: 7:33:27 PM 
Elapsed: 0.343 seconds 

请帮忙! :) ....我应该将所有的变量,连接管理器和一切添加到我的配置文件?目前我只添加了一些变量和连接管理器的ppty值,但没有组合似乎有效地工作。

+0

+1,因为这是一个常见的错误,许多可以从阅读中受益通过如何破译所有错误并达成解决方案。 –

回答

11

我要解决的第一个错误是“64位版本的SSIS中不支持Excel连接管理器,因为没有OLE DB提供程序可用。”

开箱即用的Excel驱动程序只存在于32位地址空间中。 BIDS/SSDT是一款32位应用程序,因此Excel源和目标都可以正常工作。但是,从命令行/ SQL代理运行它们时,则需要明确使用32位版本的DTEXEC程序。

第1步,将确保您可以在代理程序执行的服务器上的命令行上运行包。假设你的SQL Server安装在习惯的位置,你可能有以下DTEXEC.exe之一提供给您

C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe 
c:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe 
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe 
C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe 
C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\DTExec.exe 

您将要使用的(x86)的版本。未来的读者,如果你碰巧在32版本的Windows上(也许是Windows 2003),前三种将是唯一可用的选项。正如Vivek的错误信息所表明的那样,他正在以64位模式执行SSIS包。

dtexec提供了一个命令行开关/X86,允许您无缝地使用同一个可执行文件进行32位和64位操作。 LIES!文档确实会调用它,但是谁读取文档?

此选项仅供SQL Server代理使用。如果在命令提示符下运行dtexec实用程序,则忽略此选项 。

所以,你需要通过提供显式路径

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe /file C:\folder\GICSReport.dtsx

我看到运行你的包“无法解密受保护的XML节点”,在你的输出,并还说明你正在使用的配置文件,因此您可以将您的PackageProtectionLevel从默认的EncryptSensitiveWithUserKey更改为DontSaveSensitive。该功能的存在是为了防止敏感数据(密码)的意外暴露,但由于您已经在使用配置文件处理该数据,因此这不应该成为问题。 ...现在,我认为这可能实际上是来自其他软件包保护级别之一的错误。

无论如何,请先尝试从32位可执行文件开始运行。如果这样做不起作用,请按照指示更改包装保护等级。如果其中任何一个都使包运行正常,则尝试从SQL代理运行相同的命令。

如果所有的作品,纪念这个作为回答。如果没有,请更新当前生成的错误消息,我们会要求提供更多信息。

+2

像往常一样彻底的答案比尔! –

0

这里,如果你想与dtexec从包含Excel导入事务SQL运行SSIS包解决方案。

  1. 创建一个包含以下代码的批处理文件。

    CD C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 100 \ DTS \ BINN \ DTEXEC.exe/DE “密码”/ F “C:\ mySSISfolder \ package.dtsx”

  2. 创建指向您的批处理文件的快捷方式,将properties\advanced设置为以管理员身份运行的快捷方式。

  3. 从办理SQL过程运行以下命令

    EXEC xp_cmdshell的 'C:\ MyFolder文件\ runssis_sc.lnk'