Kiw*_*ige 14 reporting-services
此前的DBA设置了一些SQL Server Reporting Services报告以自动运行并通过电子邮件将报告发送给用户.当他离开他的帐户时被禁用,现在他们不工作.订阅状态如下:
发送邮件失败:授予用户'OURDOMAIN\old_DBA_Username'的权限不足以执行此操作.
有没有一种简单的方法可以更改所有者,我在订阅表中的RS数据库中找到了所有者字段,虽然只是更改了它,但是不想破坏我们的生产报告服务?
另一种选择当然是创建一个新的订阅并删除旧的,但是有一种更好的方式.
这里发布的解决方案对我有用.基本上,您可以通过运行下面的脚本直接在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
Run Code Online (Sandbox Code Playgroud)
小智 5
您也可以在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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19723 次 |
| 最近记录: |