设置
我有一个可以从 Visual Studio 运行的 vs2010 SSIS 包。我已经将它部署到我的本地 2012 服务器,我也可以从 SSMS 执行该包。在 SSMS 中,我在这里看到了这个包:
\Integration Services Catalogs\SSISDB\DAT_Load\Projects\UploadSYS.dtsx
注意:vs2010 没有给我一个选项,可以在任何地方部署包,只能在服务器中,然后只能在集成服务目录中。在那里,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 语句时,我收到一条错误消息:
找不到文件夹“\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 对象是否需要初始化某些东西?这甚至可能吗?