如何设置查询参数

时间:2014-03-28 11:36:27

标签: sql-server ssis sql-server-2012 ezapi

如何使用EzAPI将OLE DB源SQL命令查询参数映射到变量? 基本上我需要做类似下面的事情。

enter image description here

提前致谢。

2 个答案:

答案 0 :(得分:1)

以下是我必须为SSIS 2012做的事情。我必须找到有问题的变量的GUID并将其设置为这样。

EzOleDbSource source = new EzOleDbSource(this);
source.Connection = sourceconnection;
source.SqlCommand = sourcecomannd;
source.AccessMode = AccessMode.AM_SQLCOMMAND;
source.SetComponentProperty("ParameterMapping", "\"Parameter0:Input\",{C2BCD5B0-1FDB-4A74-8418-EEF9C1D19AC3};");

要获取GUID,您可以查询EZPackage对象中的变量。

Application a = new Application();
var package = a.LoadPackage(packagelocation, null);
var ezpackage = new EzPackage(package);
var firstOrDefault = ezpackage.Variables.OfType<Microsoft.SqlServer.Dts.Runtime.Variable>()
    .AsQueryable()
    .FirstOrDefault(x => x.Name.Equals("MyParameter"));
if (firstOrDefault != null)
{
    var guid =
        firstOrDefault.ID;
}

答案 1 :(得分:0)

我接受了Geek的回答,因为这是我问题的真正答案。但是我发现代替将变量映射到参数,我们可以直接在查询中使用变量。例如:exec your_sp_name "@[User::your_variable_name]"

更新:以上方法无效。

使用接受的答案方法。为了获取变量的GUID,我使用了以下方法。

string guid = string.Empty;

foreach (var x in this.Variables)
{
    if (x.Name == "cdc_capture_log_id")
    {
        guid = x.ID;
    }
}

this = EzPackage。与上述相同。

相关问题