我创建了一个 SSIS 包,它每小时从我的机器运行一次。我的包的第一部分运行一个执行 SQL 任务,结果集(单行、单列)是一个以逗号分隔的唯一记录 ID 列表,这些记录 ID 在上一小时内已更新。(即 FJ1、FJ2、FJ3)我将此结果捕获到一个变量中,当我执行用户脚本任务以显示此属性的值时,它会按应有的方式显示。
我使用存储过程传递此变量以在不同的 ODBC 服务器上执行 SQL 任务
我的 SQL 语句如下
call DeleteRowsById(?)
然后我将我的变量(作为 SQL_Longvarchar)分配给参数映射部分中的参数 1。(ParameterSize 为 -1)但它不会从表中删除记录。(我在 Workbench 中手动运行 SP,它按预期工作)然后我有了一个想法,作为我的 SP 的一部分,我开始在临时表中输入条目,只是为了看看会出现什么变量。Insert in the table 仅显示变量的第一个字符,这就是它不删除任何记录的原因。
有人能给我指出正确的方向吗,因为我找不到我的变量被截断的原因。
我知道不久前有人问过这个问题,但也许其他人会偶然发现这个答案,而不是花几个小时来反对这个问题。
事实证明,您需要为变量使用 SQL_WVARCHAR 类型。
以下是我的证据,显示 SQL_WVARCHAR 有效。
来自 SQL Profiler 的 OLEDB 命令:
SQL Profiler 使用 SQL_VARCHAR 的 ODBC 命令
SQL Profiler 使用 SQL_CHAR 的 ODBC 命令
SQL Profiler 使用 SQL_WVARCHAR 的 ODBC 命令