Sql server 使用dtexec运行SSIS包

Sql server 使用dtexec运行SSIS包,sql-server,ssis,export-to-excel,Sql Server,Ssis,Export To Excel,我正在使用dtexec运行SSIS包。该软件包在我的系统上运行良好。创建SQL server代理作业以按计划运行包时。运行步骤的包被安排为T-SQL任务,而不是SSIS包任务。作业没有报告错误,但它甚至没有在服务器上创建输出excel文件@my destination 此外,当我在命令shell中单独运行该命令时,它会返回如下所示的错误。它还会间歇性地返回我用来复制文件的文件系统任务的错误,说源或目标不存在!!当相同的变量值在BIDS中对我起作用时,为什么SQL作业会失败 Started: 7

我正在使用dtexec运行SSIS包。该软件包在我的系统上运行良好。创建SQL server代理作业以按计划运行包时。运行步骤的包被安排为T-SQL任务,而不是SSIS包任务。作业没有报告错误,但它甚至没有在服务器上创建输出excel文件@my destination

此外,当我在命令shell中单独运行该命令时,它会返回如下所示的错误。它还会间歇性地返回我用来复制文件的文件系统任务的错误,说源或目标不存在!!当相同的变量值在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值,但似乎没有任何组合可以有效工作。

我要解决的第一个错误是“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),那么前3个版本将是你唯一可用的选项。正如Vivek的错误消息所示,他正在以64位模式执行SSIS包

提供命令行开关/X86,使您能够无缝地将同一可执行文件用于32位和64位操作<坚强>谎言文档确实指出了这一点,但谁会阅读文档

此选项仅由SQL Server代理使用。此选项将被忽略 如果在命令提示下运行dtexec实用程序

因此,您需要通过提供显式路径来运行包

C:\ProgramFiles(x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe/文件C:\folder\GICSReport.dtsx

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

无论如何,首先尝试从32位可执行文件运行。如果不起作用,请尝试按指示更改包保护级别。如果其中任何一个使包按预期运行,则尝试从SQL代理运行相同的命令


如果一切正常,请将此标记为答案。如果没有,请使用正在生成的当前错误更新记录单,我们将询问更多信息。

如果您试图使用transact-SQL中包含excel导入的
dtexec
运行SSIS包,则以下是解决方案

  • 创建包含以下代码的批处理文件

    cd C:\Program Files(x86)\Microsoft SQL Server\100\DTS\Binn\ DTEXEC.exe/DE“password”/F“C:\mySSISfolder\package.dtsx”

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

  • 从transact-sql过程运行以下命令

    exec xp\u cmdshell“C:\myfolder\runssis\u sc.lnk”


  • 像往常一样回答得很好,比尔+1因为这是一个常见错误,许多人可以通过阅读如何破译所有错误并得出解决方案而受益。