SQL Server Reporting Services 远程匿名访问解决办法

SQL报表匿名访问配置
本文介绍如何配置SQL Server Reporting Services以支持匿名用户访问报表。主要步骤包括设置IIS匿名访问、调整报表站点权限、配置SQL Server数据库访问权限等。
SQL Server Reporting Services 并非专门设计用于 Internet 报表部署方案,但是您可以成功地将 Reporting Services 放置于面向 Internet Web 服务器上,
以将一般信息向广大公众传播,或者将公司保密数据向经过授权和身份验证用户传播。

公司的一个项目中的报表准备升级到SQL Server 2005,并且其中的报表系统将使用集成在SQL Server 2005中的Reporting Services
但是当我将报表模板发布到IIS服务器后,通过IE客户端通过浏览器访问时,默认会弹出Windows集成身份验证的对话框。
如果在IIS配置里面把允许匿名(IUSR_**)访问的选项勾选,IE客户端再次访问的时候,会提示以下信息:
1)为用户“NT AUTHORITY/NETWORK SERVICE”授予的权限不足,无法执行此操作。 (rsAccessDenied)
2) 请求因HTTP 状态401 失败:Unauthorized(IUSR_** 访问权限不足。)

对于这个问题,我在参考了msdn与网上的一篇文章(http://www.cnblogs.com/firmwolf/archive/2005/08/04/207062.html),之后解决了些问题。
解决方案:
除了要设置IIS允许匿名访问外,还需要设置Reporting Services站点的访问权限和SQL Server中数据源的用户访问权限。

下面我将把需要做的步骤列出来,大家注意前提是使用Visual Studio .NET 2005 已经正确的发布了Reporting Services制作的报表模板到IIS服务器。

第一步:在运行IISWeb服务器的本地访问http://localhost/reports ,这是Reporting Services的管理站点,在Properties属性页面下添加一个只有Browser(浏览者)
权限的新Role(角色)。注意新角色的用户名称即IUSR_** (匿名用户)。这一步就是那篇文章中步骤。(如图)
1点击新建角色分配
2弹出的IE窗口中,组或用户名文本框输入IUSR_** (匿名用户)。
3勾选浏览者权限,点OK按钮确定。
4返回到http://localhost/reports 页面中会新出现添加的Role(角色)。



第二步:除了要设置Reporting ServicesIIS站点能允许IUSR_**(匿名用户)访问外,首先需要设置SQL Server 2005 中相应的数据库能允许IUSR_**(匿名用户)有只读的访问权限和执行存储过程的权限。因为有些报表可能是由存储过程生成的。

在运行SQL Servier 2005 的数据库服务器中,打开Microsoft SQL Server Management Studio
Object Explorer(对象浏览器)中找到Security(安全性)目录下的Logins(登录名)目录上点右键,
Logins(新建登录名...),在弹出的对话框中设置。
或是在安全性上点右键-->新建-->登录。(如图)
1右键菜单选择新建登录名...”
2在登录名文本框中,输入IUSR_**(匿名用户),选择 “Windows 身份验证
3默认数据库下拉列表框找到Reporting Services制作的报表模板的数据源数据库。
4选择页列表中点击用户映射
5用户映射页面中,在映射到此登录名的用户选择Reporting Services制作的报表模板的数据源数据库。
6OK确定




第三步:还是在Microsoft SQL Server Management Studio中,找到Reporting Services的数据源数据库,
安全性”-->“用户下,找到刚才添加的IUSR_**(匿名用户)。设置他对该数据库的访问权限。(如图)
1IUSR_**(匿名用户)上右键菜单选属性
2弹出的对话框中选择安全对象
3点击添加…”
4再次弹出的对话框中选择特定类型的所有对象(T)....”
5点击确定按钮。
6、在弹出的对话框中的选择要查找的对象类型(S)”列表框中选数据库
7点击确定



还是第三步:选择IUSR_**(匿名用户)对该数据库许可的操作。

1、在“*** 的显示权限(P列表中,找到SelectExecute(如果不执行存储过程,可以不选),勾选。
(注:你会看到Connect后面是默认勾选的,因为前面设置的默认登录到数据库就是该数据库)
2、点击确定



第四步:设置IUSR_**(匿名用户)的登录密码。
1.控制面板-->管理工具-->计算机管理-->本地用户和组-->选择“IUSR_**(匿名用户)”-->设置密码.(如图)-->在弹出窗口中点击继续”-->在弹出窗口中修改密码。



第五步:打开IIS管理器,设置ReportServer虚拟目录为匿名访问。

1打开IIS管理器,在ReportServer虚拟目录上单击邮件选择属性
2,3目录安全性页面,找到身份验证和访问控制,点击编辑...”
4在弹出的身份验证方法对话框,勾选启用匿名访问
5在密码输入框中输入在第四步中修改的密码。
6用户访问需经过身份验证的位置,默认是选中集成Windows身份验证。在这儿可以不用修改它。
如果去掉了集成Windows身份验证前面的勾选,则本机(IIS服务器所在机器)对Reporting Services Web站点的访问也成了匿名访问。
7点击确定



第六步:再通过其他的客户端机器访问Reporting Services Web站点,则不再出现Windows用户登录窗口。对Reporting Services Web站点的访问已经更改为匿名用户的访问。


但是注意,有个问题会同时出现。我们再次访问http://localhost/reports 时发现,将不能对Reporting Services的权限分配。
打开http://localhost/reports 能够看到的是只有内容一个分类页面的选项,属性选项则不会出现了。
这该是Reporting Services产品刻意设计的,因为所有的用户都可以匿名访问Web站点了,权限如果放开了随便改肯定不行。

如果再需要修改/reports属性,唯一能做的就是重新打开IIS的管理器,去掉/reportserver中的匿名访问选项,再来修改。
修改后,再将/reportserver改为匿名访问

最后别忘记了,修改配置文件(d:/Program Files/Microsoft SQL Server/MSSQL.3/Reporting Services/ReportServer/rsreportserver.config):

<UrlRoot>http://192.192.192.225/reportserver</UrlRoot>

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值