FOREACH ループ コンテナーを含む SSIS パッケージがあり、ループ内にスクリプト タスクがあります。スクリプト タスクのコードは次のとおりです。
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Data.SqlClient
Imports System.Data.OleDb
Imports System.Configuration
<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
Public Sub Main()
Try
Dim oleConn As New OleDbConnection()
Dim strConn As String = Dts.Variables("ConfiguredValue").Value.ToString()
oleConn.ConnectionString = strConn
Dim oleDA As New OleDbDataAdapter()
Dim dt As New DataTable()
oleDA.Fill(dt, Dts.Variables("Source_Data").Value)
oleConn.Open()
Dim oleComm As New OleDbCommand("Insert_Into_Destination")
oleComm.CommandType = CommandType.StoredProcedure
oleComm.Connection = oleConn
oleComm.Parameters.AddWithValue("@tvp", dt)
oleDA.InsertCommand = oleComm
oleComm.ExecuteNonQuery()
oleConn.Close()
Catch ex As Exception
Throw ex
End Try
End Sub
End Class
変数の値 Dts.Variables("ConfiguredValue").Value は、For Each コンテナーの反復ごとに変化します。そして、それは次のように見えます-
"Data Source=server_name;Initial Catalog=db_name;User ID=user_id;Password = Password;Provider=SQLOLEDB.1; Persist Security Info=True;Integrated Security=SSPI;Auto Translate=False;"
問題は、パッケージが実行されると、ExecuteNonQuery() で例外がスローされ、「Unspecified Error」が表示されることです。
整数値を挿入するために同様のコードを試してもエラーはありません。入力パラメータとしてSPに渡すデータテーブルである場合に問題が発生します。
これを回避する解決策はありますか?