【问题标题】:How to pass Variable to script task SSIS, Visual Studio 2010, c#如何将变量传递给脚本任务 SSIS、Visual Studio 2010、c#
【发布时间】:2016-10-10 18:11:17
【问题描述】:

我正在尝试找到如何将服务器名称作为变量传递给 SSIS 解决方案中的脚本任务的方法。我正在使用 VS 2010 和 c#。

在我的 SSIS 中,我定义了名称(字符串)变量,并在我的脚本任务中将此变量添加为 ReadOnlyVariable。

c# 代码如下所示:

当我尝试将本地 ServerName 传递给 OleDbDataAdapter 时,问题开始(我猜),它与 strConn 完美配合,但不适用于我的 ServerName 变量。

我尝试以“User::Name”的形式传递它,但它不起作用。

任何建议将不胜感激:)

最好的

【问题讨论】:

  • 您可以使用真实且不断变化的属性 EvaluateAsexpression 来做同样的事情。
  • 您好,感谢您的评论,但不幸的是它什么也没告诉我 - 您能再解释一下,或者举一些例子吗?

标签: c# visual-studio-2010 variables ssis parameter-passing


【解决方案1】:

您是否尝试过准确地编写这段代码? (我假设您将变量 Name 定义为字符串)。您还可以参数化您的数据库名称。

string strConn = Dts.Connections[Dts.Variables["Name"].Value + "\\MY_DB_NAME"].ConnectionString;

更新: 如果您想通过脚本任务连接到您的数据库,最佳做法是配置新的连接管理器(见图)。最重要的是您的连接名称(在我的例子中是“MY_NEW_CM”)

如果您将服务器名称或数据库名称保存在变量中,则可以在连接管理器属性中使用表达式编辑器(见图)

稍后您可以在脚本任务中的代码中使用此配置的连接,如下所示:

ConnectionManager cm = Dts.Connections["MY_NEW_CM"];

我假设你想使用这个连接管理器来运行一些 SQL 命令。

你可以这样:

System.Data.SqlClient.SqlConnection sqlConn;
System.Data.SqlClient.SqlCommand sqlComm;
ConnectionManager cm = Dts.Connections["MY_NEW_CM"];

// Request an open connection
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);

// Do your work
sqlComm = new System.Data.SqlClient.SqlCommand("UPDATE YourTable SET YourColumn = 'SomeValue'", sqlConn);
int rowsAffected = sqlComm.ExecuteNonQuery();

【讨论】:

  • 感谢您的意见 - \\.现在我想知道如何将连接传递给我在连接管理器中定义的 db,而不是在变量中传递 db。我试图使用几种方法,但都没有奏效。有什么线索吗?
  • 我更新了我之前的回答...希望对您有所帮助。 :)
猜你喜欢
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多