我们有客户端运行SQL Server 2008 RC直到SQL Server 2014,并且该应用程序迄今为止版本不可知。在SQL Server 2008存储过程中隐藏exec输出
我遇到了一些问题,从存储过程返回响应,然后运行SSIS包。
的SQL Server 2012+
EXEC [SSISDB].[catalog].[create_execution]
@package_name = N'packagename.dtsx',
@execution_id = @execution_id OUTPUT,
@folder_name = N'folder',
@project_name = N'myProject',
@use32bitruntime = False,
@reference_id = Null
EXEC [SSISDB].[catalog].[start_execution] @execution_id
这是无声的,没有返回输出所以只能返回我们的SELECT
。
YET
在旧版本SSISDB没有写,你必须运行一个老式Exec的。
declare @cmd varchar(5000)
set @cmd = 'DTEXEC /DTS "\MSDB\Import\PackageName" '
EXEC @status = xp_cmdshell @cmd
这是非常详细的吐出所有的SSIS包信息。
微软(R)的SQL Server执行包实用工具
版本10.50.4000.0 64位
版权所有(C)微软公司2010年保留所有权利。入门:15时03分50秒
进展情况:2014年9月30日15:03:50.36
来源:导入文件到临时表
验证:0%完成
结束进度
进展时间:2014年-09-30 15:03:50.36
来源:导入文件到临时表
验证:完成25%
结束进度 进展情况:2014年9月30日15:03:50.39
那里因为我不能映射一个单一的实体框架存储过程,因为答案不同。
我该如何让Exec保持沉默?
我试过SET NOCOUNT ON
,但这不是问题,它是Exec(SSIS)的实际“输出”。
在低于2012的版本上运行时,我可能会将过程的运行放在单独的过程中,但这看起来有点矫枉过正,只是为了使exec非冗长而已。
另一件需要注意的事情是,人们仍然可以在2012/2014中使用Package部署模型,因此您可能无法在版本及其执行模型之间划清界限。除非你正在控制这些包裹的交付,然后我会把我的头埋在沙子里 – billinkc 2014-09-30 15:14:50
@billinkc我们有一个部署团队,一切都是管理的。可悲的是我们无法控制我们的客户端软件。 – Oli 2014-09-30 15:59:08