【问题标题】:SSIS DTEXEC Package Variable Space Character Not Accepted不接受 SSIS DTEXEC 包可变空格字符
【发布时间】:2011-03-21 21:13:07
【问题描述】:

我正在尝试使用以下方法在 SQL 2005 上执行 SSIS 包:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\"

这会产生:

Option "Batch " is not valid.

引号内的单词 Batch 末尾的空格给了我一个提示,它可能将最后的反斜杠视为转义字符。于是我就这样试了:

dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
 /SET "\Package.Variables[FileFolder].Value";"\\\\SomeServer\\Someshare\\Output Batch\\"

这允许包运行,但是当这个变量被用作平面文件的名称来输出数据时,它现在给出以下错误:

Warning: 2010-07-27 14:36:38.23
   Code: 0x8007007B
   Source: Data Flow Task Flat File Destination [72]
   Description: The filename, directory name, or volume label syntax is incorrect.
End Warning
Error: 2010-07-27 14:36:38.23
   Code: 0xC020200E
   Source: Data Flow Task Flat File Destination [72]
   Description: Cannot open the datafile "\\\\SomeServer\\Someshare\\Output Batch\FlatFile.txt".
End Error

什么给了?

【问题讨论】:

    标签: ssis package execution


    【解决方案1】:

    在列出错误数据文件的错误消息中,单词 Batch 后面的单个反斜杠暗示可能只有该反斜杠受到影响。

    一些测试证明,出于某种奇怪的原因,当包变量的最后一个字符需要是反斜杠时,SSIS 要求它加倍。即使在使用 GUI 并选择“SQL Server 集成服务包”类型的作业并单击“设置值”选项卡时,这也适用:尾随反斜杠必须加倍。

    最终的工作命令是:

    dtexec /SQL "\MyPackageName" /SERVER mssql1 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF
     /SET "\Package.Variables[FileFolder].Value";"\\SomeServer\Someshare\Output Batch\\"
    

    最后一个双反斜杠。

    【讨论】:

    • 这会被视为 Microsoft 错误吗?
    • 我认为用反斜杠转义引号有点标准。奇怪的是,只有在双引号字符之前才允许转义反斜杠本身——本质上,反斜杠转义"\",仅此而已。这可能是正常的 DOS 批处理命令行为——但我不确定。
    • 非常感谢您的上述问题和回答。当我有像 \\my server\\my path\\ 这样的网络路径时,它会将其拆分为 \\my" "server\\my" "\\path\\ 直到我找到您的解决方案。几个月前我开始研究,直到找到你的帖子。
    • 我添加了一个连接问题,请投票:connect.microsoft.com/SQLServer/feedback/details/3116924
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2013-11-03
    • 2017-09-10
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多