【发布时间】:2016-08-18 18:24:52
【问题描述】:
众所周知,SSRS 用户可以使用 Reporting Manager 创建,该用户可以通过 Reporting Service 配置管理器实用程序中给出的 url 访问。
但是,我的要求是创建一个新的 SSRS 用户使用查询。我只想知道是否可以这样做。如果是,怎么做?
【问题讨论】:
标签: sql-server reporting-services ssrs-2008 database-administration
众所周知,SSRS 用户可以使用 Reporting Manager 创建,该用户可以通过 Reporting Service 配置管理器实用程序中给出的 url 访问。
但是,我的要求是创建一个新的 SSRS 用户使用查询。我只想知道是否可以这样做。如果是,怎么做?
【问题讨论】:
标签: sql-server reporting-services ssrs-2008 database-administration
类似的东西应该可以工作。
USE ReportServer
GO
IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'loginname')
CREATE LOGIN [loginname] FROM WINDOWS
GO
CREATE USER [loginname] FOR LOGIN [loginname]
GO
【讨论】:
您不能使用报表管理器 URL 创建用户。权限管理/角色分配只能通过它完成。
将登录名/用户添加到 [ReportServer] 数据库并不意味着用户可以访问报告。
组或用户名应该是 Windows 域用户或组帐户,格式如下:<domain>\<account>。
https://msdn.microsoft.com/en-us/library/ms156034.aspx?f=255&MSPPError=-2147217396
【讨论】:
有一种方法可以满足您在查询中检查用户访问权限的要求。首先,在报表管理器中,赋予所有用户“浏览器”角色(例如,“NT AUTHORITY\Authenticated Users”)。然后,将报表的当前用户传递给您的数据库查询。
可以使用报表表达式User!UserID 检索报表的当前用户。在我的环境中,它以<DOMAIN>\<WINDOWS USER NAME> 的形式返回。请参阅MSDN Built-in Globals and Users References (Report Builder and SSRS) 了解更多信息。
【讨论】: