如何使用vs2010在SqlServer 2012中运行SSIS包

本文关键字:运行 SSIS 2012 SqlServer 何使用 vs2010 | 更新日期: 2023-09-27 18:26:27

设置

我有一个vs2010 SSIS包,可以在visual studio中运行。我已经将它部署到我的本地2012服务器上,我也可以从SSMS执行该包。在SSMS中,我在这里看到包:

''Integration Services Catalogs''SSISDB''DAT_Load''Projects''UploadSYS.dtsx

注意:vs2010不允许我在任何地方部署包,只能在服务器中部署,然后仅在Integration Services目录中部署。一旦进入,MSDB数据库就不会在sysssispakages表中有条目。

以前,打开SSMS并从那里运行包(右键单击并执行)就足够了。现在,我必须从一个C#web应用程序中执行它。此外,我需要通过事件捕获进度消息等。

努力

我能够确定如何设置事件捕获,我已经到了应该能够从代码执行包的地步

    public DTSExecResult ExecutePackage(string packageName, HttpContextBase context)
    {
        string ppath = ConfigurationManager.AppSettings[packageName + "Package"];
        string pserv = ConfigurationManager.AppSettings[packageName + "Server"];
        string puser = ConfigurationManager.AppSettings[packageName + "User"];
        string ppass = ConfigurationManager.AppSettings[packageName + "Pwd"];
        _context = context;
        _pkgLocation = "";
        _app = new Application();
        _pkg = _app.LoadFromSqlServer(ppath, pserv, puser, ppass, _SSISEvents);
        _pkgResults = _pkg.Execute(_connections, _variables, _SSISEvents, _log, null);
        return _pkgResults;
    }

问题

我找不到包裹。当我到达LoadFromSqlServer语句时,我收到一个错误,上面写着:

找不到文件夹"''Integration Services Catalogs''SSISDB''DAT_Load''Projects''UploadSYS.dtsx"

路径中的变化也会发生同样的情况(变量=ppath):

  • ''Integration Services Catalogs''SSISDB''DAT_Load''Projects''UploadSYS.dtsx
  • ''SSISDB''DAT_Load''Projects''UploadSYS.dtsx
  • ''DAT_Load''Projects''UploadSYS.dtsx
  • 等等

不能从命令行或存储过程中运行此操作。

那么,有人能说出我在这里缺少了什么吗?Application对象是否需要初始化某些内容?这可能吗?

如何使用vs2010在SqlServer 2012中运行SSIS包

继续研究这个问题,但请参阅设置SSIS数据库包路径和SSIS组织以了解后台阅读。

在SSIS 2012之前,如果将包部署到SQL Server,则它们将位于msdb中。用于与它们交互的.NET API在不同版本中是相同的。

随着SSIS的2012发布,我们有两种不同的部署模型。包部署是一种"经典"模型,它是活跃的,并得到充分支持。在2005年运行包的相同代码将适用于2012年包部署模型项目。这是Microsoft.SqlServer.Dts.Runtime命名空间

您的代码正在尝试加载使用"项目部署模型"answers"包部署模型"API构建的2012解决方案。这是Microsoft.SqlServer.Management.IntegrationServices命名空间,两者不能混用。

您可以选择将项目切换回Package部署模型或更新代码。在第一个链接的问题中,我提供了用于在SSISDB目录中运行SSIS包的VB.NET实现。运行.spac文件有一些方法,因为我在dtexec中看到了该选项,但没有看到具体的方法。这是VS/SSDT在本地运行包时使用的机制。