一批Reporting Service報表的訂閱突然報如下錯誤: Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent. 原因如下,因為開發這批報表的人(也就... ...
一批Reporting Service報表的訂閱突然報如下錯誤:
Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent.
原因如下,因為開發這批報表的人(也就是報表的創建者)離職了,然後他的NT賬號在DC裡面被系統管理員刪除了。自然就沒有許可權將訂閱的相關內容通過郵件推送給訂閱者。
The user account and password you specify in the Email settings page should have permissions to send email using SMTP server.
解決方法也很簡單,右鍵單擊報表的“管理”,進入“訂閱”,將這個訂閱刪除,然後新建一個訂閱。問題就解決了。當然“新建訂閱”的人必須有相關許可權。
解決了這個問題。Support的同事又問了一個問題,能否用SQL腳本批量修改呢,因為有幾十個報表,手工修改也確實很麻煩?另外,能否將報表的Owner(創建者)修改為其它用戶呢? 花了點時間研究這個問題,備份了一個報表,然後測試發現可以通過SQL來完成這些操作,下麵步驟僅供參考,謹記:這裡的操作步驟,不能保證沒有任何問題,因為沒有官方資料支持,僅僅是個人實驗測試,也沒有大量測試驗證。也沒有在生產環境使用。僅供參考。
1:修改報表的創建者:
在Reporting Service管理界面是無法修改報表的創建者的。但是使用SQL簡單、輕鬆。
SELECT ItemID, Path, Name, CreatedByID FROM dbo.Catalog WITH(NOLOCK) WHERE Name= N'xxx';
SELECT * FROM dbo.Users WHERE UserName='xxxx';
UPDATE dbo.Catalog SET CreatedByID ='CDF7C7C8-CBE2-4C42-BDF0-6FA2A5019F50' WHERE Name= N'xxx';
2: 修改報表訂閱的創建人
可以不用通過“刪除訂閱,然後創建訂閱”的方式解決問題,而是直接修改 [dbo].[Subscriptions]表裡面訂閱的OwnerID即可。修改後,你從管理界面還會看到這個錯誤,等到下一次訂閱執行後,LastStatus欄位值就會被更新。當然,你也可以手工更新這個欄位的值,如果你不想看到這個錯誤提示的話!
SELECT * FROM dbo.Users WHERE UserName ='xxx'
UPDATE [dbo].[Subscriptions] SET OwnerID='CDF7C7C8-CBE2-4C42-BDF0-6FA2A5019F50' WHERE Report_OID='E3F95452-718E-4847-8E27-3ED0C43F597F'
SELECT * FROM [dbo].[Subscriptions] WHERE Report_OID='E3F95452-718E-4847-8E27-3ED0C43F597F'