使用SSIS和MS-SQL Server 2012
我有一个执行的SQL任务:
SELECT COUNT(id) as id FROM PORG_Files WHERE filename = ?
因为SSIS文件名看起来像这样,所以它从不返回0以外的任何内容:
\\\\erp\\shares\\Save\\item_1168.txt
表中的文件名看起来像:
\\erp\shares\Save\item_1168.txt
我不认为我想像那样将文件名插入表中,因此如何/在何处格式化以便可以进行匹配以获取依赖于此的约束
谢谢!
好吧,如果我在SQL Manager中运行此查询,那么它将起作用。
SELECT COUNT(id) as id FROM PORG_Files WHERE filename = REPLACE('\\\\erp\\shares\\Save\\item_1168.txt','\\','\')
当我将等效项放入SQLStatement的SQL任务编辑器中时,它仍返回0
SELECT COUNT(id) as id FROM PORG_Files WHERE filename = REPLACE(?,'\\','\')
答案 0 :(得分:1)
您只是将文件名直接存储在变量中吗?如果您将文件名存储为字符串变量的表达式,则输出格式将与您描述的相同。 4个正斜杠(\
)的结果将仅为2,而2个\
将是单个斜杠。这是因为必须在SSIS表达式中转义正斜杠。在变量的“表达式”字段中,单击省略号,然后在双引号中输入文本以使其成为表达式,例如下面的示例。
“\\\\erp\\shares\\Save\\item_1168.txt”
答案 1 :(得分:1)
尝试使用表达式而不是传递参数:
在“执行SQL任务”的“转到表达式”选项卡中,为SQLStatementSource
属性添加表达式,如下所示:
"SELECT COUNT(id) as id FROM PORG_Files WHERE filename = '" + @[User::CurrentFileName] + "'"