在 C# .NET 中运行 SSIS 包

Posted

技术标签:

【中文标题】在 C# .NET 中运行 SSIS 包【英文标题】:Running SSIS package in C# .NET 【发布时间】:2021-04-13 13:12:44 【问题描述】:

我正在尝试从一个简单的控制台应用程序运行 SSIS 包。不幸的是,我遇到了一些错误`

       using System;
       using System.Collections.Generic;
       using System.Linq;
       using System.Text;
       using System.Threading.Tasks;
       using Microsoft.SqlServer.Management.IntegrationServices;
       using System.Data.SqlClient;

         namespace SSIStutorial
     
class Program

    static void Main(string[] args)
    
        // Variables
        string targetServerName = "localhost";
        string folderName = "Projects";
        string projectName = "SSIS Tutorial";
        string packageName = "Lesson 1.dtsx";

        // Create a connection to the server
        string sqlConnectionString = "Data Source = cgol1793109; Initial Catalog = TEST; Integrated Security=True;";
        SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

        // Create the Integration Services object
        IntegrationServices integrationServices = new IntegrationServices(sqlConnection);

        // Get the Integration Services catalog
        Catalog catalog = integrationServices.Catalogs["SSISDB"];

        // Get the folder
        CatalogFolder folder = catalog.Folders[folderName];

        // Get the project
        ProjectInfo project = folder.Projects[projectName];

        // Get the package
        PackageInfo package = project.Packages[packageName];

        // Run the package
        package.Execute(false, null);
    


在实例化 IntegrationServices 类型的 IntegrationServices 对象时,我得到以下信息。 我收到以下错误。

System.MissingMethodException H结果=0x80131513 消息=找不到方法:'无效 Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection..ctor(System.Data.SqlClient.SqlConnection)'。 源=Microsoft.SqlServer.Management.IntegrationServices 堆栈跟踪: 在 Microsoft.SqlServer.Management.IntegrationServices.IntegrationServices..ctor(SqlConnection sqlConnection) 在 C:\Users\kokoro\source\repos\SSIStutorial\Program.cs:line 26 中的 SSIStutorial.Program.Main(String[] args) 处

【问题讨论】:

我没有看到在 doc 中采用连接字符串的构造函数重载 我传入的是 sqlConnection 对象而不是字符串 看起来大致正确。 cgol1793109 上是否有 SSISDB 数据库?另一个观察结果是我通常在连接字符串中看到等号或分号周围没有空格,因此"Data Source=cgol1793109;Initial Catalog=TEST;Integrated Security=True;" 【参考方案1】:

我的控制台应用遇到了同样的问题。遵循Microsoft docs 上的所有步骤,但它没有工作,得到与您完全相同的错误 Method not found: 'Void Microsoft.SqlServer.Management.Sdk.Sfc.SqlStoreConnection..ctor(System.Data. SqlClient.SqlConnection)'.

Microsoft docs 解决方案不适用于控制台应用程序 (.NET Core),它仅适用于控制台应用程序 (.NET Framework)。

我猜你想在控制台应用程序 (.NET Core) 上运行?我将我的更改为 .NET Framework 并且它有效。

【讨论】:

【参考方案2】:

参考official documentation,您用于定义连接和实例化 IntegrationServices 对象的步骤是正确的。这意味着问题是由连接字符串引起的。尝试删除额外的空格,编辑集成安全参数,并使用主数据库作为初始目录:

string sqlConnectionString = "Data Source=cgol1793109;Initial Catalog=master;Integrated Security=SSPI;";
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);

【讨论】:

以上是关于在 C# .NET 中运行 SSIS 包的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET 执行 SSIS 包时出错

通过代码创建和执行的 SSIS 包需要在多次运行后重新启动服务

SSIS部署:SQL Server部署中的SSIS包运行时错误

安排 SSIS 包按计划运行

运行SSIS包的几种方式

总结运行SSIS包的几种方式