You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否从本地服务器获取远程SSISDB中的SSIS包并在本地执行?

SSIS包远程获取并本地执行的实现方案

核心问题说明

你当前使用Microsoft.SqlServer.Management.IntegrationServices调用包执行时,本质是调度SSISDB所在服务器执行包,而非将包拉取到本地运行。要实现本地执行,需分两步:先从SSISDB提取包内容,再用SSIS运行时引擎在本地加载执行。

具体实现步骤

1. 从SSISDB提取包二进制内容

通过Microsoft.SqlServer.Management.IntegrationServices连接ETL数据库服务器,定位目标包并获取其字节流:

  • 确保已安装匹配SQL Server 2019版本的NuGet包Microsoft.SqlServer.Management.IntegrationServices
  • 代码示例:
using Microsoft.SqlServer.Management.IntegrationServices;
using System.Data.SqlClient;

string ssisDbConnStr = "Data Source=ETL-DB-Server;Initial Catalog=SSISDB;Integrated Security=SSPI;";
byte[] packageBytes = null;

using (SqlConnection conn = new SqlConnection(ssisDbConnStr))
{
    IntegrationServices iss = new IntegrationServices(conn);
    // 定位到SSISDB中的目录、文件夹、项目、包
    Catalog ssisCatalog = iss.Catalogs["SSISDB"];
    Folder targetFolder = ssisCatalog.Folders["你的文件夹名"];
    ProjectInfo targetProject = targetFolder.Projects["你的项目名"];
    PackageInfo targetPackage = targetProject.Packages["你的包名.dtsx"];
    
    // 获取包的二进制内容
    packageBytes = targetPackage.GetPackageBytes();
}

2. 本地加载并执行包

使用Microsoft.SqlServer.Dts.Runtime(SSIS运行时引擎)加载提取的包字节流,在本地执行:

  • 确保已安装匹配SQL Server 2019版本的NuGet包Microsoft.SqlServer.Dts.Runtime
  • 代码示例:
using Microsoft.SqlServer.Dts.Runtime;

if (packageBytes != null)
{
    Application dtsApp = new Application();
    // 从字节流加载包
    using (Package localPackage = dtsApp.LoadPackageFromXML(packageBytes, null))
    {
        // 按需配置包变量、连接字符串(替换远程环境配置)
        // localPackage.Variables["变量名"].Value = "本地值";
        
        // 执行包
        DTSExecResult execResult = localPackage.Execute();
        
        // 处理执行结果
        if (execResult != DTSExecResult.Success)
        {
            foreach (DtsError error in localPackage.Errors)
            {
                // 记录错误信息:error.Description、error.Source等
            }
        }
    }
}

关键注意事项

  • 运行时依赖:ETL应用服务器必须安装SQL Server 2019 Integration Services Runtime(无需安装SSISDB)
  • 权限配置:Windows服务的运行账户需具备:
    • ETL数据库服务器SSISDB的读取权限(能访问目标包所在的目录、项目、包)
    • 本地执行SSIS包所需的权限(如访问数据源、本地文件系统、网络资源等)
  • 配置替换:若包中依赖的连接字符串、文件路径等是针对ETL数据库服务器配置的,需在本地加载后替换为适用于ETL应用服务器的配置

内容的提问来源于stack exchange,提问作者Gopi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 06:55:21