我們有客戶端運行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