Sql 由于路径格式化,SSIS优先约束不起作用

Sql 由于路径格式化,SSIS优先约束不起作用,sql,sql-server,ssis,etl,execute-sql-task,Sql,Sql Server,Ssis,Etl,Execute Sql Task,使用SSIS和MS-SQL Server 2012 我有一个SQL任务正在执行: SELECT COUNT(id) as id FROM PORG_Files WHERE filename = ? 它从不返回除0以外的任何内容,因为SSIS文件名如下所示: \\\\erp\\shares\\Save\\item_1168.txt \\erp\shares\Save\item_1168.txt 表中的文件名如下所示: \\\\erp\\shares\\Save\\item_1168.txt

使用SSIS和MS-SQL Server 2012

我有一个SQL任务正在执行:

SELECT COUNT(id) as id FROM PORG_Files WHERE filename = ?
它从不返回除0以外的任何内容,因为SSIS文件名如下所示:

\\\\erp\\shares\\Save\\item_1168.txt
\\erp\shares\Save\item_1168.txt
表中的文件名如下所示:

\\\\erp\\shares\\Save\\item_1168.txt
\\erp\shares\Save\item_1168.txt
我认为我不想像那样将文件名插入表中,所以我应该如何/在哪里设置格式,以便进行匹配以获得依赖于此的约束

谢谢

好的,如果我在SQL管理器中运行这个查询,它就会工作

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(?,'\\','\')

您只是将文件名直接存储在变量中吗?如果将文件名存储为字符串变量的表达式,则输出格式将与您描述的格式相同。4个正斜杠(
\
)的结果将只有2个,而2个
\
将是单个斜杠。这是因为必须在SSIS表达式中转义正斜杠。在变量的表达式字段中,单击省略号并在双引号内输入文本,使其成为一个表达式,如下面的示例所示

“\\\\erp\\shares\\Save\\item_1168.txt”
变通方法-表达式 尝试使用表达式而不是传递参数:

在执行SQL任务中,转到表达式选项卡,为
SQLStatementSource
属性添加表达式,如下所示:

"SELECT COUNT(id) as id FROM PORG_Files WHERE filename = '" + @[User::CurrentFileName] + "'" 

您使用的表达式是什么?我没有表达式。@Dizzy49问题解决了吗?任务在ForEach循环中。变量在通过文件时会发生变化。只是我的SQL语句无法匹配,因为有额外的\s,所以我需要在General?Dizzy49下编辑SQLSourceType和SQLStatement?使用expression时保留它
直接输入
@Dizzy49,“常规”选项卡中的SQLStatement没有任何值,因为它在runtime@Dizzy49有什么新的东西吗?它最终是一个东西的组合,但使用这个表达是我做到的:)