2

スクリプト タスクを取得した ssis パッケージを作成しました。そのスクリプト タスクを使用して、データベース テーブルの 1 つからカウントを取得し、そのカウントをメールで送信しています。さて、そのスクリプト タスクで、変数から接続を取得すると、機能します。しかし、接続マネージャーから直接接続したいのですが、うまくいきません。同じことを提案してください。以下は、私が使用したコードスニペットです。

    Public Sub Main()
    Dim str_con As String
    str_con = Dts.Connections("INPUND79.Sample.sample").ConnectionString.ToString()
    Dim con As New SqlConnection(str_con)
    con.Open()
    Dim cmd As New SqlCommand("select count(*) from Department", con)
    Dim a As Integer = Convert.ToInt32(cmd.ExecuteScalar())
    Dim message As String = "Total Number of Records in Department Table is :" & a & ""
    Dim SmtpServer As New SmtpClient()
    Dim mail As New MailMessage()
    SmtpServer.Host = "UKCAMSCAS10.aveva.com"
    mail = New MailMessage()
    mail.From = New MailAddress("mandar.dandage@aveva.com")
    mail.To.Add("mandar.dandage@aveva.com")
    mail.Subject = "Count in Table"
    mail.Body = message
    SmtpServer.Send(mail)
    Dts.TaskResult = ScriptResults.Success
    End Sub
4

1 に答える 1

0

質問に答えたとしても; ただし、別の接続を使用しているため、これは最善の方法ではありません。たとえば、パッケージでトランザクションを使用している場合は影響を受けません。OLE DB接続には、次のスクリプトを使用する必要があります。

ConnectionManager cm = Dts.Connections["INPUND79.Sample.sample"];
IDTSConnectionManagerDatabaseParameters100 cmParams = cm.InnerObject as IDTSConnectionManagerDatabaseParameters100;
connection = cmParams.GetConnectionForSchema() as OleDbConnection;
// Do whatever you want with the connection
cm.ReleaseConnection(connection);

これが正しい方法です。"C:\Program Files (x86)\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SQLServer.DTSRuntimeWrap.dll"を参照する必要があります。

于 2014-04-02T18:06:03.707 に答える