SSIS:我怎么拉从一个文件中的SQL语句转换成一个字符串变量?(SSIS: How do I pu

2019-09-01 06:12发布

我有存储在文本文件的几个SQL语句。 我怎么拉这些文件到SSIS一个字符串变量,这样我可以用在多个地方相同的查询?


答案的问题:

该查询是长期和复杂的,这是我宁愿在真实的文本编辑器编辑,而不是内部的SSIS文本框。 我也喜欢查询是由不具备访问SSIS或者不知道如何使用它的人谁编辑。 最后,每个查询在许多不同的数据流被使用。 纠正我,如果我错了,但如果我使用多点,我相信我一定要使用变量或相同的查询重新编写每个数据流的代码。

Answer 1:

以下是我做了这事(到处寻找答案,并找到后无来者。)

我开始与将数据导出向导创建的包,所以我的指示涉及到的。 做这种方式建立的列映射。 如果您没有使用导出向导创建的包,你可能必须手动添加列。

  1. 添加一个名为SQLFileName到包一个字符串变量。
  2. 添加一个名为的SqlCommand到包一个字符串变量。
  3. 在控制流开始添加脚本任务。
  4. 编辑脚本任务,进入到脚本部分。
  5. 添加SQLFileName到ReadOnlyVariables部分。 将它设置为你的.sql文件的路径。
  6. 添加的SqlCommand到ReadWriteVariables部分。
  7. 单击设计脚本。
  8. 粘贴下面的脚本。 它只是读取由SqlFileName指定到的SqlCommand该文件的内容。
  9. 确定你的出路和脚本任务连接到控制流的其余部分。
  10. 转到您的数据流,然后选择源查询。 你需要编辑在属性窗口的属性。 如果您使用花哨的编辑窗口中,您会得到关于未设置命令文本错误。 这是因为SqlCommand的是在设计时的空白。
  11. 在AccessMode从变量更改为SQL命令。
  12. 在SQLVariableName,选择的SqlCommand。
  13. 你会看到一个红色的X被添加到源查询。 这是因为SqlCommand的是空白。 为了防止红色的X,ValidateExternalMetaData更改为False。

仅此而已。 我希望我记得所有的位。 该脚本是关键的部分,这样你可以得到SQL到一个变量,然后使用数据流中的变量。


   Imports System
    Imports System.IO
    Imports Microsoft.SqlServer.Dts.Runtime

    Public Class ScriptMain

        Public Sub Main()

            Try

                Dts.Variables("SQLCommand").Value = System.IO.File.ReadAllText(Dts.Variables("SQLFileName").Value.ToString)

                Dts.TaskResult = Dts.Results.Success

            Catch oException As System.Exception

                Dts.TaskResult = Dts.Results.Failure

            End Try

        End Sub

    End Class


Answer 2:

我不建议这样做。 我的建议是一个存储过程。

以下是如何不过,在创建连接管理器文件连接。 该文件连接打开的属性,并编辑表达式。 创建包含SQL文件路径的连接字符串属性的表达式(喜欢的东西@[User::SQLFileName]其中SQLFileName是你的变量)。

设置您的执行SQL任务,并将其指向包含刚才创建的表达式中的文件连接。 如果您在变量改变路径它会改变SQL被执行什么(因为表达式是在运行时进行评估)。 你甚至可以从一个数据库加载这些路径,并为每个包含执行SQL任务做了。 如果您加载/出使用这些文件,而不仅仅是SQL任务的数据,你需要看的列和元数据。

短剑的一种



Answer 3:

另外,(这可能并不适用于你自己),你可以创建能够在不访问SSIS包来改变实际的数据库视图。 然后,其他用户可以编辑SQL像你提到,你甚至可能会在讨价还价一些IntelliSense支持。

我不是写在SSIS文本框中SQL或者风扇。



文章来源: SSIS: How do I pull a SQL statement from a file into a string variable?