代码改变世界

Failure sending mail: The user or group name 'xxx\xxxx' is not recognized.Mail will not be resent

2018-12-05 17:03  潇湘隐者  阅读(856)  评论(0编辑  收藏  举报

 

一批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.

 

解决方法也很简单,右键单击报表的管理,进入订阅,将这个订阅删除,然后新建一个订阅。问题就解决了。当然新建订阅的人必须有相关权限。

 

clip_image001[5]

 

   

    解决了这个问题。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'