如何在C#中更改SSI中的连接属性?
我有这个代码来执行一个包。这个包所做的只是将非常大的表数据导出到excel文件中如何在C#中更改SSI中的连接属性?,c#,asp.net,asp.net-mvc,ssis,C#,Asp.net,Asp.net Mvc,Ssis,我有这个代码来执行一个包。这个包所做的只是将非常大的表数据导出到excel文件中 [HttpPost] public ActionResult TableToFile() { try { var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SSIS"].ConnectionStr
[HttpPost]
public ActionResult TableToFile()
{
try
{
var connection = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SSIS"].ConnectionString);
var integrationServices = new IntegrationServices(connection);
var package = integrationServices
.Catalogs["SSISDB"]
.Folders["MyFolder"]
.Projects["MyProject"]
.Packages["MyPackage.dtsx"];
long executionIdentifier = package.Execute(true, null);
ExecutionOperation eo = integrationServices.Catalogs["SSISDB"].Executions[executionIdentifier];
while (!eo.Completed)
{
eo.Refresh();
System.Threading.Thread.Sleep(5000);
}
return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json(new { result = "error" }, JsonRequestBehavior.AllowGet);
}
}
但是,该包具有硬编码连接,如sql server源文件和excel文件目标文件名。我们可以在包中的连接管理器中看到
我在VB.Net中有这段代码,它使用不同的库来设置包的连接
Dim source As String = System.Windows.Forms.Application.StartupPath() & "\export.dtsx"
Dim p As Microsoft.SqlServer.Dts.Runtime.Package = app.LoadPackage(source, Nothing)
Dim exec As Executables = p.Executables
For Each config As ConnectionManager In p.Connections
Select Case config.Name
Case "SourceConnectionOLEDB"
config.ConnectionString = "..... some connection string here"
Case "DestinationConnectionFlatFile"
config.ConnectionString = file
Dim inner As Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManagerFlatFile90 = CType(config.InnerObject, Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManagerFlatFile90)
For i As Integer = 0 To inner.Columns.Count - 1
Dim innerColumn As Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManagerFlatFileColumn90 = inner.Columns(i)
If i < inner.Columns.Count - 1 Then
innerColumn.ColumnDelimiter = delimiter
Else
innerColumn.ColumnDelimiter = vbNewLine
End If
Next
End Select
Next
For Each taskhost As TaskHost In exec
taskhost.Execute(Nothing, Nothing, Nothing, Nothing, Nothing)
Next
Dim source As String=System.Windows.Forms.Application.StartupPath()&“\export.dtsx”
Dim p为Microsoft.SqlServer.Dts.Runtime.Package=app.LoadPackage(源代码,无内容)
作为可执行文件的Dim exec=p.可执行文件
对于p.Connections中的每个配置作为ConnectionManager
选择Case config.Name
案例“SourceConnectionOLEDB”
config.ConnectionString=“……此处有一些连接字符串”
案例“DestinationConnectionFlatFile”
config.ConnectionString=文件
将内部设置为Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManagerFlatFile90=CType(config.InnerObject,Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManagerFlatFile90)
对于i,整数=0到inner.Columns.Count-1
将innerColumn设置为Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSConnectionManagerFlatFileColumn90=inner.Columns(i)
如果i
我的问题是,在我像VB.Net那样在上面的C代码中执行包之前,如何更改连接字符串或某些设置?既然您似乎正在使用SSIS目录,那么您也应该能够使用项目环境变量。基本上,您的包将引用这些变量,并且您将在执行之前设置这些值 关于这一点,目前有一个解释