2017-06-02 70 views
0

我已經建立了幾個SSRS訂閱這是在通過按需運行(這只是觸發預先存在的時間表)SSRS 2016報告時間表 - T-SQL觸發器

EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C' 

我會非常喜歡do有一個SSRS訂閱,我可以通過存儲過程多次傳遞不同的參數值,目前這些值是在訂閱本身中設置的。

作爲一個例子,我有一個@Client參數和3級的客戶端123,124和125

所以我運行將執行SSRS訂閱並通過指定的參數的存儲過程的報告。即 - 123例如下─

EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C' @Client = 123 

但是我無法找到,將工作

回答

0

我可能沒有完全理解你的問題的方法,所以提前道歉,如果我帶你下了兔子洞。話雖如此..

鑑於你的情況,這是我將如何設置我的報告和他們的訂閱。

我會將參數@Client放在報表中,並從表格中獲取它的值,我們稱它爲Client_Table,其中包含一個屬性ClientCode,這將驅動報表中選擇的數據。

然後,我會創建一個存儲過程,其中將嵌套EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C',但會截斷包含@Client值的表,僅用於您希望特定執行報表的客戶機。像這樣的東西..

create proc ProcNameHere @ClientID int 

as 

truncate table Client_table --Truncate values from previous run 

Insert Client_Table 
Select @ClientID --add ClientID for this run 

EXEC msdb.dbo.sp_start_job = '0B5B5AB1-F475-4478-A3DA-3D602C4FDA4C' -- run the report that takes clientid from Client_ID table 

讓我知道這是你的意思。

通過這種方式,您可以使用EXEC ProcNameHere '123'爲客戶端123運行報表,因爲這將成爲報表中唯一驅動客戶端選擇的表中的唯一條目。

+0

是的,你已經理解了我,週末有了一個頓悟,並提出了非常相似的東西!創建一個默認參數表,然後更改平面表上游標中每個參數的值,以便每次預訂運行時,默認參數都已更改。 – XDSA5286

+0

太棒了!很高興它解決了。 – Herman