【问题标题】:How to pass a variable to ODBC SQL Command in SSDT 2017?如何在 SSDT 2017 中将变量传递给 ODBC SQL 命令?
【发布时间】:2019-02-04 15:58:07
【问题描述】:

我找不到将参数传递给 ODBC 源的选项?我可以看到很多与此相关的文章,但在数据流任务表达式中找不到相同的选项。 [ODBC Source].[SqlCommand] 不在数据流任务中。

我参考的文章如下:

有人可以帮忙吗?

【问题讨论】:

  • 出于兴趣,您为什么使用 ODBC 连接而不是 OLEDB?除非我记错了,否则我很确定 BIDS/SQL Server 2008 支持 OLEDB。
  • 您在 SSIS 中使用什么来尝试传递变量?或者是其他东西。如果执行 SQL 任务?如果是这样,您可以使用表达式在 SSIS 中的变量中构建 SQL 语句,并在 SQL 任务中使用变量而不是输入文本。
  • 我想连接 IBM Netezza 并执行一个将日期参数传递给它的查询。 SQL 任务在这里不起作用
  • 您使用的 SQL Server 和 Visual Studio 以及 SSDT 版本是什么?

标签: sql-server ssis odbc etl sqlcommand


【解决方案1】:

我认为由于 Visual Studio 、SSDT 和 SQL Server 版本不匹配,该属性丢失。首先,您必须检查您使用的是相关且适当的版本,您可以查看以下链接以获取更多信息:

同时尝试检查包目标服务器版本

类似问题链接


更新 1

在搜索此问题时,我发现[ODBC Source].[SqlCommand] 属性可能在 2012 年(2005,2008)之前的版本中找不到,但我找到了一个提到解决方法的链接:

如果源是 OLE DB 源,您可以轻松地放入参数,但如果它是 ODBC 源呢?你必须使用 DataReader 源,而且你不能轻易设置参数——比如 WHERE 语句。您必须使用表达式才能使用动态 WHERE 语句进行查询或将变量作为 WHERE 语句过滤器传递。

所以,在你的包上抛出一个 DataFlow,在里面抛出一个 DataReader 源,然后设置到你的 ODBC 连接(ADO.NET 连接)的连接并设置命令文本。

【讨论】:

  • 将检查不匹配情况。版本 VS 2017 (SSDT) Version 15.9.4 .SSIS Target version 2016 & SQl Server :Microsoft SQL Server 2016 (SP2-CU2) (KB4340355) - 13.0.5153.0 (X64)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 2019-08-13
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
相关资源
最近更新 更多