运行 .Net 5 应用程序中的 SSIS
Run SSIS in .Net 5 Application
我想创建可以 运行 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,但是项目中需要 运行ning SSIS 所以我试图找到一种方法来执行它,即使生成的 .Net Core 应用程序只能在 windows 环境中使用。有人知道怎么做吗?
从当前版本的 SSIS SQL Server 2019 开始,它是一个基于 .NET Framework 的解决方案。 Script Tasks 的默认目标是 4.5,因此将其作为 SSIS 所基于的当前框架的指标。我不相信您将能够使用 SSIS 对象模型来控制包执行。
另一件需要注意的事情是,即使您设法让它发挥作用,您也可能 运行 陷入法律问题。 运行 Visual Studio 之外的 SSIS 包需要在 运行 安装 SSIS 包的机器上安装 SQL 服务器许可证。期间,句号,不通过去,不收取 200 美元。因此,如果您的应用程序除了 运行s SSIS 包之外还做这些很酷的事情,应用程序消费者需要准备好在 运行s 它的机器上支付每个核心 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 服务器安装媒体上的“SQL 服务器集成服务”服务时,有一个 SSIS 服务选项。这将帮助您完成许可检查并在 32 位和 64 位应用程序路径中安装 dtexec.exe。 运行一个包部署模型包变成dtexec /f path/to/my/package.dtsx
知道了,看来Core支持System.Diagnostics.Process so you're looking at a call like Process.Start("dtexec.exe");
after setting all the parameters
SSISDB
使用项目部署模型创建您的程序包并部署到获得许可的 SQL 服务器机器上,困难的事情就迎刃而解了。您的应用程序需要担心的是连接到 SQL 服务器,然后请求 SQL 服务器连接到 run the package.
我想创建可以 运行 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,但是项目中需要 运行ning SSIS 所以我试图找到一种方法来执行它,即使生成的 .Net Core 应用程序只能在 windows 环境中使用。有人知道怎么做吗?
从当前版本的 SSIS SQL Server 2019 开始,它是一个基于 .NET Framework 的解决方案。 Script Tasks 的默认目标是 4.5,因此将其作为 SSIS 所基于的当前框架的指标。我不相信您将能够使用 SSIS 对象模型来控制包执行。
另一件需要注意的事情是,即使您设法让它发挥作用,您也可能 运行 陷入法律问题。 运行 Visual Studio 之外的 SSIS 包需要在 运行 安装 SSIS 包的机器上安装 SQL 服务器许可证。期间,句号,不通过去,不收取 200 美元。因此,如果您的应用程序除了 运行s SSIS 包之外还做这些很酷的事情,应用程序消费者需要准备好在 运行s 它的机器上支付每个核心 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 服务器安装媒体上的“SQL 服务器集成服务”服务时,有一个 SSIS 服务选项。这将帮助您完成许可检查并在 32 位和 64 位应用程序路径中安装 dtexec.exe。 运行一个包部署模型包变成dtexec /f path/to/my/package.dtsx
知道了,看来Core支持System.Diagnostics.Process so you're looking at a call like Process.Start("dtexec.exe");
after setting all the parameters
SSISDB
使用项目部署模型创建您的程序包并部署到获得许可的 SQL 服务器机器上,困难的事情就迎刃而解了。您的应用程序需要担心的是连接到 SQL 服务器,然后请求 SQL 服务器连接到 run the package.