gpt4 book ai didi

c# - 如何使用 vs2010 在 Sql Server 2012 中运行 SSIS 包?

转载 作者:太空狗 更新时间:2023-10-29 21:17:54 26 4
gpt4 key购买 nike

设置

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

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

注意:vs2010 没有给我一个选项,让我可以在任何地方部署一个包,除了在服务器上,然后只能在 Integration Services Catalogs 中。进入后,MSDB 数据库在 sysssispackages 表中没有条目。

以前,启动 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 语句时,我收到一条错误消息:

Cannot find folder "\Integration Services Catalogs\SSISDB\DAT_Load\Projects\UploadSYS.dtsx"

同样的事情发生在路径的变化中(variable = ppath):

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

从命令行或存储过程运行它不是一种选择。

那么,有人能告诉我这里缺少什么吗? Application 对象是否需要初始化某些东西?这可能吗?

最佳答案

再咬一口问题,但看到 Set SSIS database package pathSSIS Organization用于背景阅读。

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

随着 2012 版 SSIS 的发布,我们有两种不同的部署模型。包部署是“经典”模型,它仍然存在并得到完全支持。用于在 2005 年运行包的相同代码将适用于 2012 年包部署模型项目。这是 Microsoft.SqlServer.Dts.Runtime命名空间

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

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

关于c# - 如何使用 vs2010 在 Sql Server 2012 中运行 SSIS 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com