c# - 在 .Net 5 应用程序中运行 SSIS

标签 c# ssis .net-5

我想创建可以运行 SSIS 包的 .Net 5 应用程序。

这是我执行包的代码。

Application app = new Application();
Package package = app.LoadPackage(@"C:\Package1.dtsx", null);

for (int i = 0; i < package.Connections.Count; i++)
{
    Connections connections = package.Connections;

    //This is the line that causes error
    ConnectionManager connectionManager = connections[0];

    Console.WriteLine(connectionManager.Name);
}

DTSExecResult results = package.Execute();

它编译没有错误,但是在执行时,在获取连接的那一行,它引发了一个错误,说

Could not load file or assembly 'Microsoft.SqlServer.Diagnostics.STrace, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'. The system cannot find the file specified.

我什至找不到 Microsoft.SqlServer.Diagnostics.STrace 的 dll。我认为是因为我使用.Net Core 并且 SSIS 库只支持 .Net Framework,但是项目中需要运行 SSIS 所以我试图找到一种方法来执行它,即使生成的 .Net Core 应用程序只能用于 window 环境。有人知道怎么做吗?

最佳答案

截至 SSIS 的当前版本 SQL Server 2019,它是一个基于 .NET Framework 的解决方案。 Script Tasks 的默认目标是 4.5,因此将其作为 SSIS 所基于的当前框架的指标。我不相信您将能够使用 SSIS 对象模型来控制包执行。

另一件需要注意的事情是,即使您设法让它发挥作用,您也可能会遇到法律问题。在 Visual Studio 之外运行 SSIS 包需要在运行 SSIS 包的计算机上安装 SQL Server 许可证。期间,句号,不通过去,不收取 200 美元。因此,如果您的应用程序执行这些很酷的事情并运行 SSIS 包,则应用程序消费者需要准备好在运行它的机器上为每个内核支付 10-20k 的许可费,至少 4 个内核。

否则,你会遇到这样的错误

To run a SSIS package outside of SQL Server Data Tools you must install Standard edition of Integration Services or higher

或错误指定未安装组件。

因此,假设您已获得许可,并且没有其他人更清楚如何让 .Net Core 操作 .Net Framework 代码 - 您还能如何运行包?

DTEXEC

当您安装 SQL Server 安装介质上的“SQL Server Integration Services”服务时,有一个 SSIS 服务选项。这会让您通过许可检查并安装 dtexec.exe在 32 位和 64 位应用程序路径中。运行包部署模型包变成dtexec/f path/to/my/package.dtsx

知道了,看起来 Core 支持 System.Diagnostics.Process所以在设置所有参数后,您正在查看类似 Process.Start("dtexec.exe"); 的调用 https://stackoverflow.com/a/181857

SSISDB

使用项目部署模型创建您的程序包并将其部署到获得许可的 SQL Server 机器上,这样困难的事情就迎刃而解了。您的应用程序所需要担心的就是连接到 SQL Server,然后要求 SQL Server run the package .

关于c# - 在 .Net 5 应用程序中运行 SSIS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70376055/

相关文章:

c# - .NET 5 EF Core SaveChangesAsync 因错误而挂起

c# - AuthenticationResult.IsSuccessful 开始为 google 返回 false

c# - 自动列出所有方法参数以将它们向前传递

python - 在 sql server 上运行 python(.py 脚本)

c# - 使用 .NET Core 5 确定屏幕尺寸?

c# - 在 .C# 和 NET 5 中,在 struct 和 Span<byte> 之间进行无不安全的转换,反之亦然

c# - "Thickness"的 TypeConverter 不支持从字符串转换

c# - 在 web api 中使用 async await 的最佳实践

SSIS 包适用于 Visual Studio 和命令行,但不适用于 Agent

sql-server - 由于错误 0x8007005 7"The parameter is incorrect."SSIS 作业无法运行