2014-03-28 71 views

回答

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; 
} 
+0

有沒有辦法找到動態變量的GUID? –

+0

是的,你可以。我更新了我的答案以顯示如何。 – tsells

+0

謝謝..... !!! –

0

我已經接受極客的答案,因爲它是我的問題的真正答案。但是我發現不是將變量映射到參數,而是直接在查詢中使用變量。例如:exec your_sp_name "@[User::your_variable_name]"

UPDATE:上述方法不起作用。

使用接受的答案方法。爲了獲取變量的GUID,我使用了follwing方法。

string guid = string.Empty; 

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

其中this = EzPackage。同上。