设置
我有一个可以从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语句时,出现以下错误:
无法找到文件夹“\ 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
- 等等。
无法通过命令行或存储过程运行此操作。
那么,有谁能告诉我我错过了什么?应用程序对象需要初始化某些内容吗?这真的可能吗?