2014-09-30 73 views
0

我們有客戶端運行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非冗長而已。

+0

另一件需要注意的事情是,人們仍然可以在2012/2014中使用Package部署模型,因此您可能無法在版本及其執行模型之間劃清界限。除非你正在控制這些包裹的交付,然後我會把我的頭埋在沙子裏 – billinkc 2014-09-30 15:14:50

+0

@billinkc我們有一個部署團隊,一切都是管理的。可悲的是我們無法控制我們的客戶端軟件。 – Oli 2014-09-30 15:59:08

回答

0

我只需要返回2個字段,所以我使用它們作爲輸出參數。這對將來會產生更多輸出或收集的過程會很惱人;儘管現在很好。

存儲過程PARAMS

(
    @schemaId int, 
    @companyCode char(2), 
    @companyName nvarchar(100), 
    @transactionId nvarchar(15) OUTPUT, 
    @RtnStatus int OUTPUT 

實體查詢

ObjectParameter rtnStatus = new ObjectParameter("RtnStatus", typeof(int?)); 
ObjectParameter transactionId = new ObjectParameter("TransactionId", typeof(string)); 
_dataContext.spFixedWidthDataImportSSIS(schemaId, companyCode, companyName, rtnStatus, transactionId).FirstOrDefault(); 
DataToolsTransactionDto dto = new DataToolsTransactionDto((int?)rtnStatus.Value, transactionId.Value.ToString()); 

這確實似乎是一個抽象的方法只是用來掩飾從DTEXEC一些輸出數據雖然。

0

告訴dtexec安靜即可;)

DTEXEC /DTS "\MSDB\Import\PackageName" /REP N 

/REP N表示希望發生任何報告。

這仍然會生成文本的最小量雖然

Microsoft (R) SQL Server Execute Package Utility 
Version 10.50.4319.0 for 32-bit 
Copyright (C) Microsoft Corporation 2010. All rights reserved. 

Started: 9:53:28 AM 
DTExec: The package execution returned DTSER_SUCCESS (0). 
Started: 9:53:28 AM 
Finished: 9:53:29 AM 
Elapsed: 1.045 seconds 

你可以嘗試將輸出重定向到一個文件與>但我似乎記得有被一些wonkiness與方法時,通過運行xp_cmdshell。

​​
+0

迄今爲止這麼近。瞭解/ REP N很棒,但只要它存在,映射就會失敗。儘管謝謝,但我會研究輸出到文件。 – Oli 2014-09-30 15:02:28

相關問題