SQL Server 2005中设置Reporting Services发布web报表的匿名访问

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

一位朋友提出个问题:集成到 SQL Server 2005 中的 Reporting Services 已经将报表模板发布到 IIS 服务器,客户端通过浏览器访问时,默认会弹出 Windows 集成身份验证的对话框。如果在 IIS 配置里面把允许匿名( IUSR_** )访问的选项勾选,客户端再次访问的时候,会提示 IUSR_** 访问权限不足。

对于这个问题,除了要设置 IIS 允许匿名访问外,还需要设置 Reporting Services 站点的访问权限和 SQL Server 中数据源的用户访问权限。

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

第一步:在运行 IIS Web 服务器的本地访问 http://localhost/reports ,这是 Reporting Services 的管理站点,在 Properties (属性)页面下添加一个只有 Browser (浏览者)权限的新 Role (角色)。注意新角色的用户名称即 IUSR_** (匿名用户)。

1、 点击“ New Role Assignment ”(分配新角色)

2、 弹出的 IE 窗口中, Group or user name (组或用户名) 文本框输入 IUSR_** (匿名用户)。

3、 勾选 Browser (浏览者)权限,点 OK 按钮确定。

4、 返回到 http://localhost/reports 页面中会新出现添加的 Role (角色)。

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

第二步:除了要设置
Reporting Services IIS 站点能允许 IUSR_** (匿名用户)访问外,首先需要设置 SQL Server 2005 中相应的数据库能允许 IUSR_** (匿名用户)有只读的访问权限。

在运行 SQL Servier 2005 的数据库服务器中,打开 Microsoft SQL Server Management Studio 。在 Object Explorer (对象浏览器)中找到 Security (安全)目录下的 Logins (登录),在 Logins (登录)图标上面单击右键快捷菜单上,选择 New Login… (新登录),弹出的对话框中设置。

1、 右键菜单选择 New Login… (新登录)。

2、 Windows authentication 中的 Login Name (登录名)文本框,输入 IUSR_** (匿名用户)。

3、 Defaults (默认)的 Database (数据库)下拉列表框找到 Reporting Services 制作的报表模板的数据源数据库。

4、 Select a page (选择一个页面)列表中点击“ Database Access ”(数据库访问)。

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

第三步:在 Data Access 页面中,在 Databases accessible by this login (数据库默认登录)选择 Reporting Services 制作的报表模板的数据源数据库。

1、 选择数据库

2、 OK 确定

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

第四步:还是在 Microsoft SQL Server Management Studio 中,找到 Reporting Services 的数据源数据库,在“ Security ”(安全)下的“ Users ”(用户)下,找到刚才添加的 IUSR_** (匿名用户)。设置他对该数据库的访问权限。

1、 IUSR_** (匿名用户)上右键菜单选 Properties (属性)。

2、 弹出的对话框中选择 Permissions (许可)。

3、 点击“ Add Objects… ”(增加对象)。

4、 再次弹出的对话框中选择“ Add objects of types ”。

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

还是第四步:弹出的对话框中选 Databases (数据库的)。

1、 Select Object Types (选择对象类型)对话框选择“ Databases ”(数据库的)。

2、 OK 确定。

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

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

1、 Permissions for *** 列表中,找到 Select ,勾选。(注:你会看到 Connect 后面是默认勾选的,因为前面设置的默认登录到数据库就是该数据库)

2、 OK 确定。

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

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

1、 打开 IIS 管理器,在 ReportServer 虚拟目录上单击邮件选择“ Properties ”(属性)。

2、 在“目录安全性”页面,找到“身份验证和访问控制”,点击“编辑 ... ”。

3、 在弹出的“身份验证方法”对话框,勾选“启用匿名访问”。

4、 在“用户访问需经过身份验证”的位置,默认是选中“集成 Windows 身份验证”。在这儿可以不用修改它。如果去掉了“集成 Windows 身份验证”前面的勾选,则本机( IIS 服务器所在机器)对 Reporting Services Web 站点的访问也成了匿名访问。

5、 OK 确定。

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

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

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

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

SQL Server 2005中设置Reporting Services发布web报表的匿名访问

再一想, http://localhost/reports http://localhost/reportserver 这两个虚拟目录对应的物理目录是不同的。一个 http://localhost/reports 对应的是 C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportManager ;而 http://localhost/reportserver 对应的是 C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer 。刚才对 \reportserver 的匿名访问权限的修改又怎么影响到 \reports 了呢??

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

你可能感兴趣的:(sql,sql,Web,浏览器,server,IIS)