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