【问题标题】:SSIS ODBC SQL parametersSSIS ODBC SQL 参数
【发布时间】:2014-11-05 16:25:09
【问题描述】:

我在 odbc 源数据流任务中有一个 SQL 命令需要接受参数,但没有添加参数的选项。
我尝试将数据库添加为与 ODBC 提供程序的 ADO.NET 连接,但也没有可用的参数。还尝试将其作为 OLEDB 连接,但没有可用于 ODBC 的提供程序。 需要的变量都设置好了,就是不能作为参数添加。

所以我想知道的主要问题是:
是否有办法将参数添加到 ODBC 源中的 SQL 命令
是否有我可以使用的 ODBC OLEDB 提供程序?
我可以直接在查询中访问包变量吗?这会让我为 sql 注入敞开心扉吗?像这样。

"SELECT * FROM MyTable WHERE [id] = " + @[User::id]

编辑:
这是更改后的表达式

"SELECT Name, PhoneNum, Address FROM PERSON<br>
WHERE Name = '" + @[User::Name] + "'<br>
AND PhoneNum = '" + @[User::PhoneNum] + "'"

它在源代码中生成:

SELECT Name, PhoneNum, Address FROM PERSON<br>
WHERE Name = ''<br>
AND PhoneNum = ''

它会根据值填充引号吗?

【问题讨论】:

  • 您是否尝试过在连接字符串中使用表达式?
  • 连接字符串有效。你的意思是来自变量选项的sql命令吗?这不会显示在选项列表中。
  • 对不起,我以为您指的是连接中的参数,而不是查询。
  • 没问题。我已经在问题中澄清了一点。
  • 我将尝试通过脚本执行此操作,看看效果如何。

标签: sql parameters ssis odbc


【解决方案1】:

您必须在数据流之外使用表达式生成器。转到控制流选项卡,选择包含 ODBC 或 ADO 网络源的数据流,然后查看属性窗口。您将在那里看到 ODBC 或 ADO Net Source 的属性,以及“Expressions”属性,您可以在其中设置表达式以生成动态 SQL。

编辑

这是您要更改属性的位置的图像。您需要在数据流中设置通用 SQL 语句,单击确定,然后返回控制流。然后右键单击您的数据流并单击属性。在表达式下,您可以选择您的 SQL 命令并使用变量构建它。

【讨论】:

  • 那会用 SQL 命令动态填充变量,对吧?我在 ODBC 源中没有该选项。只能从表和sql命令中选择。
  • @Jooooosh - 你是对的,它没有给你那个选项。这是一种解决方法。您需要使用属性表达式编辑器来创建动态 sql 语句。我已经详细说明了我的答案。
  • 好的,我明白你的意思了。 SQL 命令属性更改源中的命令。这看起来像表达式的正确语法吗? ="SELECT Name, PhoneNum, Address FROM PERSON WHERE Name = " + @[User::Name] + " AND PhoneNum = " + @[User::PhoneNum] + "\""
  • 我把一个运行在我的答案中,但它没有得到任何数据。你能看一下吗?
  • 如果它运行,但不返回结果,那么听起来您的变量的值之一可能不正确。您是否尝试过删除它们并运行它?如果这不起作用,我可以看看它。
猜你喜欢
  • 2018-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多