我们有一个ETL-DB服务器(SQL Server 2019)-安装了SSISDB和SSIS服务。根据我们新的公司DBA政策,ETL服务器将被视为数据库服务器,不再允许在ETL-DB服务器上安装我们的Windows服务应用程序。
要解决此问题,我们安装了另一个没有SSISDB的SSIS服务器(ETL-应用程序服务器),只有SSIS服务在运行。根据我们公司的策略,此服务器被视为非数据库服务器,允许我们在此服务器上安装Windows服务。
因此,我们在此ETLAppServer上安装了Windows服务。这些服务尝试通过编程获取存储在SSISDB(ETL-DB服务器)中的SSIS包,并在ETLAppServer中本地执行。
我看到的是,本地包可以从本地执行,远程包执行可以从本地服务器触发。但是远程包不能从远程服务器获取并在本地服务器上执行。
Windows服务使用Microsoft.SqlServer.Management.IntegrationServices
,并尝试使用ETLDBServer连接字符串获取和执行包。但我们观察到,包仅在ETLDBServer上执行。
即使来自ETLAppServer的Windows服务是尝试连接到远程ETLDBServer以获取包并执行的服务。
注:根据下面的MSDN文档,我所理解的,看起来是可能的。但我不确定正确的解决方案。
SSIS Remote Execution
包与启动它的程序在同一台计算机上运行。即使程序加载的包远程存储在另一台服务器上,该包也会在本地计算机上运行。
1条答案
按热度按时间tp5buhyn1#
这是从Microsoft支持部门收到的解决方案。
项目部署是紧密耦合的体系结构。SSISDB中的包将在部署它们的同一台服务器上执行。当您在后台的项目部署模型中运行项目时,它将首先触发SSISDB中负责执行的存储过程。没有办法确保包执行发生在不同的服务器上。您也可以在应用程序服务器上安装SQL Server,并将SSIS包部署到SSISDB