【问题标题】:How to Copy SSIS Package from MSDB Database to File System using ssms or ssis Package如何使用 ssms 或 ssis 包将 SSIS 包从 MSDB 数据库复制到文件系统
【发布时间】:2017-12-24 21:06:51
【问题描述】:

有没有办法使用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 没有问题,因为我成功完成了“文件复制”。

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

但结果是:

错误:执行进程任务时出现 0xC0029151,执行进程任务:正在执行 "C:\Windows\System32\cmd.exe" "dtutil /sourceserver servername\instancename /SQL "\TestingData\Package" /copy file;"c :\Package.dtsx"" at "",进程退出代码为“1”,而预期为“0”。 任务失败:执行处理任务

【问题讨论】:

    标签: sql-server ssis etl sql-server-data-tools


    【解决方案1】:

    建议

    有很多事情需要考虑:

    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"'
      

    参考文献

    【讨论】:

    • 1- 如上所述,使用xp_cmdshell 将文件从一个位置复制到另一个位置没有问题。 2-我在ssmsssis之外使用dtutil没有问题。
    • 似乎第一个建议对我来说是缺失的,因为我在另一个驱动器上成功尝试了相同的查询,在 C 驱动器上创建 Full Control 后,错误消失了。令人困惑的是,我直接从dtutil 尝试了相同的查询,没有问题,但使用WindowsAuthentication 或'SqlServerAuthentication' 执行查询失败。
    • @mhdsweidan 让你使用 SSIS 的执行进程任务再试一次
    • 通过将Executable Property 中的cmd.exe 的路径替换为dtutil.exe 并在传递参数时删除了“xp_cmdshell 'dtutil”,成功执行了包。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多