这是我做这件事的方式(在到处搜索答案却一无所获之后)。
我从“导出数据向导”创建的程序包开始,因此我的说明与此相关。这样做可以建立列映射。如果您没有使用“导出向导”来创建程序包,则可能需要手动添加列。
- 将名为SQLFileName的字符串变量添加到包中。
- 将名为SQLCommand的字符串变量添加到包中。
- 在控制流的开头添加脚本任务。
- 编辑脚本任务,然后转到“脚本”部分。
- 将SQLFileName添加到ReadOnlyVariables部分。将其设置为您的.sql文件的路径。
- 将SQLCommand添加到ReadWriteVariables部分。
- 单击设计脚本。
- 粘贴在下面的脚本中。它只是将SqlFileName指定的文件内容读入SQLCommand。
- 确定您的出路,然后将脚本任务连接到其余的控制流。
- 转到您的数据流,然后选择“源查询”。您需要使用属性窗口来编辑属性。如果您使用精美的“编辑”窗口,则会收到有关未设置命令文本的错误。这是因为SQLCommand在设计时是空白的。
- 将AccessMode从变量更改为SQL Command。
- 在“ SQLVariableName”下,选择“ SQLCommand”。
- 您会看到一个红色的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


