简体   繁体   中英

SSIS display variable values in script task

I'm doing some testing, outputting a full result set from a Execute SQL Task into a Foreach loop as below

在此输入图像描述

and I just want to output my variable values to a message box, however it doesn't seem to work.

public void Main()
    {

        try
        {

            // TODO: Add your code here
            string Variables = Dts.Variables["User::ClientID"].ToString() +
            Dts.Variables["User::Passphrase"].ToString() +
            Dts.Variables["User::KeyFileName"].ToString() +
            Dts.Variables["User::InboundEncryptionRequired"].ToString() +
            Dts.Variables["User::SftpResponseRequired"].ToString() +
            Dts.Variables["User::OutboundDecryptionRequired"].ToString() +
            Dts.Variables["User::SftpHost"].ToString() +
            Dts.Variables["User::SftpPort"].ToString() +
            Dts.Variables["User::SftpUserName"].ToString() +
            Dts.Variables["User::Active"].ToString() +
            Dts.Variables["User::SftpDownloadFrom"].ToString() +
            Dts.Variables["User::SftpUploadTo"].ToString() +
            Dts.Variables["User::SftpDeleteFilesFromRemote"].ToString() +
            Dts.Variables["User::ConnectionProtocol"].ToString();

            MessageBox.Show(Variables);

        }



        catch (Exception Ex)
        {

            MessageBox.Show(Ex.Message);

        }
    }
}

}

I'm just getting "element cannot be found in a collection" or something, even though I know the query is outputting 2 rows.

I have also mapped my variables on the foreach loop and specified read only variables on scrip task.

* UPDATE *

This is driving me nuts. I've triple checked my variable names, can confirm I'm getting full result set.

在此输入图像描述

I removed the User:: from my script task variables, but still no luck.

You have to pass in the variables you are using. Double-click the Script Task and in the "Script Task Editor" modal window, enter the variables you want to display in "ReadOnlyVariables" or "ReadWriteVariables". Then you'll be able to reference them in your code.

脚本任务编辑器

It sounds as if one of your variable names is not spelled correctly and it cannot be found in the array.

Also you could use

string Variables = String.Format("{0},{1},...",Dts.Variables["User::ClientID"],Dts.Variables["User::Passphrase"],...)

to display the values or set your variables string.

You don't have to specify the scope: User or System . Remove User:: from each name. If it still doesn't work - you must have misspelled one of the names.

Also you need to get the value and convert it to string. Correct format is: Dts.Variables["Passphrase"].Value.ToString()

I just stumbled upon this after trying to solve a similar problem. The first issue I found with your code is that you don't have

.value

before the .ToString in the string you are concatenating. I changed this on mine and it worked.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM