如何使用 ssms 或 ssis 包将 SSIS 包从 MSDB 数据库复制到文件系统

How to Copy SSIS Package from MSDB Database to File System using ssms or ssis Package

有没有办法使用 SSMSSSIS 包将 SSIS 包从 MSDB 数据库复制到文件系统。

我的尝试:

  1. SSMS QUERY

    中使用 dtutilxp_cmdshell
    EXEC xp_cmdshell 'dtutil  /sourceserver  SERVERNAME\INSTANCENAME /SQL "\TestingData\Package" /copy file;"c:\Package.dtsx"'
    

结果:

注意:在没有 dtutil 的情况下使用 xp_cmdshell 没有问题,因为我成功地 'File Copy'.

  1. 我的第二次尝试是相同的,但使用 SSIS 组件 Execute Process task

但结果是:

Error: 0xC0029151 at Execute Process Task, Execute Process Task: In Executing "C:\Windows\System32\cmd.exe" "dtutil /sourceserver servername\instancename /SQL "\TestingData\Package" /copy file;"c:\Package.dtsx"" at "", The process exit code was "1" while the expected was "0". Task failed: Execute Process Task

建议

需要考虑的事情很多:

  1. 在第一个屏幕截图中,您得到的输出是 访问被拒绝,所以首先检查您是否对 C:\ 具有写权限驱动器,或者尝试复制到另一个路径。

  2. 尝试重新排序传递给 dtutil 工具的参数并删除包路径前的 \

    EXEC xp_cmdshell 'dtutil /SQL TestingData\Package /sourceserver SERVERNAME\INSTANCENAME /Copy File;"c:\Package.dtsx"'
    
  3. 在上面的命令中,您必须对要连接的 SQL 实例进行 windows 身份验证,因此如果您没有此类身份验证,尝试使用 SQL 身份验证:

    EXEC xp_cmdshell 'dtutil /SQL TestingData\Package /SourceServer SERVERNAME\INSTANCENAME /SourceUser Monkey_User /SourcePassword P@$$word /Copy file;"c:\Package.dtsx"'
    

参考资料