2016-06-10 42 views
0

我是一名全新的初級SQL開發人員。我繼承了幾個報告,這些報告在報告管理器上。其中一些似乎設置了訂閱,但它們包含無效的電子郵件地址。找到並更改報表管理器報表訂閱的電子郵件地址

據我所知,我可以通過單擊報告,轉到管理,訂閱等,通過報告管理器逐個修改每個報告及其訂閱。然而,這似乎是時間和精力的巨大浪費,並且它未提供非常可靠的解決方案。

我寧願花時間在更有意義的事情上。有什麼方法可以訪問我的所有報告管理器報告SSMS訂閱?我希望能夠看到他們現在硬編碼的電子郵件地址,然後修改該電子郵件地址以從HR數據庫中的員工電子郵件列表中進行選擇。這樣,如果稍後電子郵件發生變化,或者我們想從所有訂閱中刪除一個人,則不會涉及大量時間。

此外,有沒有人知道如何避免似乎與報告管理器來的荒謬的工作命名約定?我不知道報告「3AC1BB6F-D782-46DD-99F5-CCA1E6257091」與什麼關聯,但是如果它可以被修改爲默認爲「ReportName + Microsoft'sTicalicalBSNamingCovention」之類的東西,那很好,會讓一些感。

我希望這是有道理的。提前感謝大家與我分享您的經驗和知識。 :^)

回答

3

這是一個查詢,可以讓您查看訂閱,當然,假設您知道報表服務器數據庫的位置。

SELECT A.SubscriptionID, A.Report_OID, B.Name, 
Path, A.LastRunTime, A.Description, C.UserName AS Owner, A.LastStatus, A.ExtensionSettings 
FROM Subscriptions A INNER JOIN Catalog B 
ON A.Report_OID = B.ItemID 
INNER JOIN Users C 
ON A.OwnerID = C.UserID 
WHERE A.ExtensionSettings LIKE '%[email protected]%' -- this can be more than an email, like a paramater value 
ORDER BY A.LastRunTime DESC 

這是您可以用來更新訂閱的查詢。

UPDATE Subscriptions SET 
ExtensionSettings = REPLACE(CAST(ExtensionSettings AS nvarchar(max)), 'name', 'new_name') 
WHERE ExtensionSettings LIKE '%[email protected]%' 

謹慎使用更新,否則您可能最終會手動重建訂閱。

請勿混淆Report Manager創建的訂閱作業。如果您需要爲特定訂閱查找作業,請嘗試確保每個訂閱都有一個獨特的時間表。按上次運行日期對作業列表進行排序,以查找上次啓動訂閱的時間。右鍵點擊運行。無論如何,這對我來說足夠好。

相關問題