SSIS 错误代码 DTS_E_OLEDBERROR 0x80040E21 转换规范的字符值无效
SSIS Error Code DTS_E_OLEDBERROR 0x80040E21 Invalid character value for cast specification
我是 SSIS 新手,刚开始尝试。我想弄清楚如何将参数从 ssis 项目传递到项目中的 sql 语句。我在 OLE DB 数据源中定义了一个 sql 脚本,该脚本对数据源的访问模式是 SQL 命令。在 where 子句中,我有 where date between ?和 ?并创建两个项目级参数,开始日期和结束日期,
我希望在 运行 时读入 where 子句。当我 运行 包时,我得到这个错误
错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E21。
OLE DB 记录可用。来源:"Microsoft SQL Server Native Client 11.0" Hresult:0x80040E21 描述:"Invalid character value for cast specification".
不确定我哪里出错了。有人可以帮忙吗。
我没有使用执行SQL任务,我的脚本在ole db源连接器
这就是我为 ?参数
部分原因是日期的转换问题。在 SSIS 中,格式为 yyyymmdd 的日期似乎不会像在 t-sql 中那样自动转换为日期数据类型,因此它会抛出 "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E21 Description: "Invalid character value for cast specification" .
为了解决这个问题,我创建了两个变量 startdate 和 enddate,并使用表达式将 yyyymmdd 格式的项目级参数 $Project::startdate
和 $Project::enddate
转换为这样的日期数据类型 SUBSTRING(@[$Project::startdate],1,4) + "-" +
SUBSTRING(@[$Project::startdate],5,2) + "-" + SUBSTRING(@[$Project::startdate],7,2)
.
然后通过新变量映射到我的 SQL 脚本中的参数,如下所示:
我是 SSIS 新手,刚开始尝试。我想弄清楚如何将参数从 ssis 项目传递到项目中的 sql 语句。我在 OLE DB 数据源中定义了一个 sql 脚本,该脚本对数据源的访问模式是 SQL 命令。在 where 子句中,我有 where date between ?和 ?并创建两个项目级参数,开始日期和结束日期,
我希望在 运行 时读入 where 子句。当我 运行 包时,我得到这个错误
错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E21。 OLE DB 记录可用。来源:"Microsoft SQL Server Native Client 11.0" Hresult:0x80040E21 描述:"Invalid character value for cast specification".
不确定我哪里出错了。有人可以帮忙吗。
我没有使用执行SQL任务,我的脚本在ole db源连接器
这就是我为 ?参数
部分原因是日期的转换问题。在 SSIS 中,格式为 yyyymmdd 的日期似乎不会像在 t-sql 中那样自动转换为日期数据类型,因此它会抛出 "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E21 Description: "Invalid character value for cast specification" .
为了解决这个问题,我创建了两个变量 startdate 和 enddate,并使用表达式将 yyyymmdd 格式的项目级参数 $Project::startdate
和 $Project::enddate
转换为这样的日期数据类型 SUBSTRING(@[$Project::startdate],1,4) + "-" +
SUBSTRING(@[$Project::startdate],5,2) + "-" + SUBSTRING(@[$Project::startdate],7,2)
.
然后通过新变量映射到我的 SQL 脚本中的参数,如下所示: