Jam*_*sen 6 c# ssis visual-studio-2010 sql-server-2012
我有一个vs2010 SSIS包,我可以从visual studio运行.我已将其部署到我的本地2012服务器,我也可以从SSMS执行该程序包.在SSMS中,我在这里看到包:
\ Integration Services目录\ SSISDB\DAT_Load\Projects\UploadSYS.dtsx
注意:vs2010不提供在任何地方但在服务器中部署软件包的选项,然后仅在Integration Services目录中.进入后,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;
}
Run Code Online (Sandbox Code Playgroud)
我无法找到包裹.当我到达LoadFromSqlServer语句时,收到一条错误消息:
找不到文件夹"\ Integration Services Catalogs\SSISDB\DAT_Load\Projects\UploadSYS.dtsx"
路径中的变化(变量= ppath)也会发生同样的事情:
不能从命令行或存储过程运行它.
那么,谁能告诉我在这里缺少什么?Application对象是否需要初始化某些内容?这甚至可能吗?
再考虑一下问题,但请参阅 设置SSIS数据库包路径和SSIS组织以进行后台阅读.
在SSIS 2012之前,如果将软件包部署到SQL Server,它们将存在于msdb中.用于与它们交互的.NET API在不同版本中是相同的.
随着2012年SSIS的发布,我们有两种不同的部署模型.包部署,这是"经典"模型是活生生的,完全支持.在2005上运行包的相同代码适用于2012包部署模型项目.这是Microsoft.SqlServer.Dts.Runtime命名空间
您的代码正在尝试使用"包部署模型"API加载使用"项目部署模型"构建的2012解决方案.这是Microsoft.SqlServer.Management.IntegrationServices命名空间和两个不混合.
您可以选择将项目切换回Package部署模型或更新代码.在第一个链接的问题中,我提供了用于在SSISDB目录中运行SSIS包的VB.NET实现.有一些运行.ispac文件的方法,因为我看到了选项,dtexec
但我没有看到具体的方法.这是VS/SSDT在本地运行包时使用的机制.
归档时间: |
|
查看次数: |
5164 次 |
最近记录: |