我有存储在文本文件的几个SQL语句。 我怎么拉这些文件到SSIS一个字符串变量,这样我可以用在多个地方相同的查询?
答案的问题:
该查询是长期和复杂的,这是我宁愿在真实的文本编辑器编辑,而不是内部的SSIS文本框。 我也喜欢查询是由不具备访问SSIS或者不知道如何使用它的人谁编辑。 最后,每个查询在许多不同的数据流被使用。 纠正我,如果我错了,但如果我使用多点,我相信我一定要使用变量或相同的查询重新编写每个数据流的代码。
我有存储在文本文件的几个SQL语句。 我怎么拉这些文件到SSIS一个字符串变量,这样我可以用在多个地方相同的查询?
答案的问题:
该查询是长期和复杂的,这是我宁愿在真实的文本编辑器编辑,而不是内部的SSIS文本框。 我也喜欢查询是由不具备访问SSIS或者不知道如何使用它的人谁编辑。 最后,每个查询在许多不同的数据流被使用。 纠正我,如果我错了,但如果我使用多点,我相信我一定要使用变量或相同的查询重新编写每个数据流的代码。
以下是我做了这事(到处寻找答案,并找到后无来者。)
我开始与将数据导出向导创建的包,所以我的指示涉及到的。 做这种方式建立的列映射。 如果您没有使用导出向导创建的包,你可能必须手动添加列。
仅此而已。 我希望我记得所有的位。 该脚本是关键的部分,这样你可以得到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
我不建议这样做。 我的建议是一个存储过程。
以下是如何不过,在创建连接管理器文件连接。 该文件连接打开的属性,并编辑表达式。 创建包含SQL文件路径的连接字符串属性的表达式(喜欢的东西@[User::SQLFileName]
其中SQLFileName是你的变量)。
设置您的执行SQL任务,并将其指向包含刚才创建的表达式中的文件连接。 如果您在变量改变路径它会改变SQL被执行什么(因为表达式是在运行时进行评估)。 你甚至可以从一个数据库加载这些路径,并为每个包含执行SQL任务做了。 如果您加载/出使用这些文件,而不仅仅是SQL任务的数据,你需要看的列和元数据。
短剑的一种
另外,(这可能并不适用于你自己),你可以创建能够在不访问SSIS包来改变实际的数据库视图。 然后,其他用户可以编辑SQL像你提到,你甚至可能会在讨价还价一些IntelliSense支持。
我不是写在SSIS文本框中SQL或者风扇。