当前位置:  开发笔记 > 数据库 > 正文

如何在SQL Server Reporting Services中更改订阅的所有者

如何解决《如何在SQLServerReportingServices中更改订阅的所有者》经验,为你挑选了3个好方法。

此前的DBA设置了一些SQL Server Reporting Services报告以自动运行并通过电子邮件将报告发送给用户.当他离开他的帐户时被禁用,现在他们不工作.订阅状态如下:

发送邮件失败:授予用户'OURDOMAIN\old_DBA_Username'的权限不足以执行此操作.

有没有一种简单的方法可以更改所有者,我在订阅表中的RS数据库中找到了所有者字段,虽然只是更改了它,但是不想破坏我们的生产报告服务?

另一种选择当然是创建一个新的订阅并删除旧的,但是有一种更好的方式.



1> ntombela..:

这里发布的解决方案对我有用.基本上,您可以通过运行下面的脚本直接在SSRS数据库中调整订阅所有者.

DECLARE @OldUserID uniqueidentifier
DECLARE @NewUserID uniqueidentifier
SELECT @OldUserID = UserID FROM dbo.Users WHERE UserName = 'DOMAINA\OldUser'
SELECT @NewUserID = UserID FROM dbo.Users WHERE UserName = 'DOMAINA\NewUser'
UPDATE dbo.Subscriptions SET OwnerID = @NewUserID WHERE OwnerID = @OldUserID



2> brianng..:

我之前遇到过这个问题,并在Jeremiah Clark的博客上找到了这篇文章的答案.

要点是,您正在使用新用户更新ReportServer数据库的Subscriptions表中的Owner字段.

无论如何,为我工作.



3> 小智..:

您也可以在Visual Studio中的C#中执行此操作。依此类推,在报表服务器上创建一个对ReportService2010.asmx的Web引用。

public class ChangeOwner
{
public string OldOwner { get; set; }
public string NewOwner { get; set; }

public ChangeOwner()
{
}

public void ChangeReportOwner()
{
    ReportingService2010 rs = new ReportingService2010();
    //set the URL to your report server
    rs.Url = "http://youserver/ReportServer/ReportService2010.asmx";
    rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

    Subscription[] items = rs.ListSubscriptions("/");

    foreach(Subscription item in items)
    {
        if(item.Owner.ToUpper() == this.OldOwner.ToUpper())
        {
            Console.WriteLine("Updating report " + item.Path + " " + item.Owner);
            rs.ChangeSubscriptionOwner(item.SubscriptionID, this.NewOwner);
        }
    }
}

}

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有