SqlServerReportService的部署问题
近期在研究SSRS部署问题,因为以前也⽤到过SSRS报表,但当时开发的报表是有专门的集成系统的,不需要我⾃⼰去部署,所以对这⼀块的部署也不熟悉,我记得当时我是直接开发出⼀个SSRS 报表,然后会通过⾃动上传的⽅式上传到微软Dynamic CRM系统中,它带有⾃带的集成部署。⽽现如今,看来⼜得重新回去恶补⼀下部署的信息了。经过⽆数的错误的再错误的尝试,最终还是过五关斩六将通过了测试了,不容易啊~~。下⾯我就在部署中遇到的问题统计⼀下,以供⽇后⼤虾们遇到同样的问题的时候可以解决。
先来说说环境的问题吧,我使⽤的是Win8的系统,然后数据库环境为SQL Service 2008 R2版本的,我们在安装这个版本的数据库的时候切记,在选择数据库登录验证⽅式的时候,莫要选择默认的Windows⾝份验证的⽅式,可以选择混合的⾝份验证⽅式,这个我在后⾯会提到。接下来说的就是这个数据库版本的问题了,从SQL 2008版本开始,它跟以前的部署⽅式就不太⼀样了,不需要部署在IIs上,⽽是要通过匿名⽅式进⾏报表的访问。怎么设置匿名⽅式访问呢,问题来了,默认的系统中的⽂件配置都是Windows的,所以这就要求我们去更改系统中的⼀些配置⽂件以修改匿名访问权限:
⾸先到对应的存放要修改⽂件的位置:(请到你在安装的时候设置的默认实例的地址)
1.        C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportSer
ver下的fig、
2.        C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportManager下的fig
配置过程:
1.        到两个fig⽂件中的如下代码:
<authentication mode="Windows" />
<identity impersonate="true" />
替换成:
<authentication mode="None" />
<identity impersonate="false"/>
2.        到fig⽂件中的如下代码:
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
替换成:
<Authentication>
<AuthenticationTypes>
<Custom/>
</AuthenticationTypes>
sqlserver2008怎么下载<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
3.  把⽂件Microsoft.Samples.ReportingServices.AnonymousSecurity.dll放到C:\Program Files\Microsoft SQL
Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin⽬录下(注意:⽬录视具体安装情况⽽定)
4.        到fig⽂件中的如下代码:
<Security>
<Extension Name="Windows" Type="Microsoft.ReportingServices.Authorization.WindowsAuthorization,
Microsoft.ReportingServices.Authorization"/>
</Security>
<Authentication>
<Extension Name="Windows" Type="Microsoft.ReportingServices.Authentication.WindowsAuthentication,
Microsoft.ReportingServices.Authorization"/>
</Authentication>
替换成:
<Security>
<Extension Name="None" Type="Microsoft.Samples.ReportingServices.AnonymousSecurity.Authorization,
Microsoft.Samples.ReportingServices.AnonymousSecurity" />
</Security>
<Authentication>
<Extension Name="None" Type="Microsoft.Samples.ReportingServices.AnonymousSecurity.AuthenticationExtension, Microsoft.Samples.ReportingServices.AnonymousSecurity" />
</Authentication>
5.        到⽂件fig中的如下代码:
</NamedPermissionSets>
<CodeGroup
class="FirstMatchCodeGroup"
version="1"
PermissionSetName="Nothing">
<IMembershipCondition
class="AllMembershipCondition"
version="1"
/>
在后⾯添上如下代码(注意Url地址可能不同):
<CodeGroup class="UnionCodeGroup"  version="1"
PermissionSetName="FullTrust"  Name="Private_assembly" Description="This code group grants custom
code full trust.">                            <IMembershipCondition class="UrlMembershipCondition"
version="1"  Url="C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER2008\Reporting
Services\ReportServer\bin\Microsoft.Samples.ReportingServices.AnonymousSecurity.dll" />
</CodeGroup>
6.        重启Reporting Service服务。
上⾯就是对匿名访问权限的设置了。
接下来就要谈⼀下在报表⽂件中的⼀些设置的问题:
我们在建⽴数据源的时候需要⼀个凭据,可是在前⾯我们已经把默认的权限访问⽅式设为匿名访问了,是不能再使⽤Windows集成访问的,我也试了不需要凭据的⽅式,还是会报错,那就只能选择使⽤⽤户名和密码的⽅式访问了,这就是为什么在前⾯我提到的,在安装数据库的时候最好使⽤混合模式了,我们在这需要⽤到安装的时候设置好的访问数据库的⽤户名和密码来进⾏数据库的访问
否则的话会报错,
接下来就是报表系统属性的设置了,我就不⼀⼀列举了,直接发个图吧:
注意⼀下各属性的值的设置,估计问题也不⼤。
在做完报表之后,我们就应该把它部署发布到对应的报表服务器上去,也就是到了配置报表的时候了,先上图:
默认的服务账户的⼀半是内置账户,我选的是LocalSystem,这个问题不⼤,对应的Web 服务URL的设置就是报表⽂件中的TargetURL,请确保⼀致的,在这⾥我们可以采⽤系统⾃⼰默认的,不需要做啥更改,当然你也可以⾃⼰坐⼀下修改,⽐如改改端⼝啥的,接下来就是报表管理器的URL的设置,跟Web服务URL差不多,可以采⽤默认的。这⾥要注意到的是,由于我们之前采⽤的是匿名访问的⽅式,所以需要指定⼀个执⾏账户,这个千万不能落了,不然会出问题的,在制定执⾏账户中,必须是你的系统数据库有对应的账户的,不能凭空弄⼀个名字,这就要求你在数据库安全性中设置对应的账户名,并给其配置⼀定的⾓⾊权限。
做到这⾥,整个流程就差不多了,我们就可以查看报表结果了:
呜呼,整个流程就这样⾛通了~~中途中可能出现什么程序集未能到的问题,归根结底还是⽤户和权限未设置好的问题,所以不要⽼想着去下载什么程序集弄进去,先把账户和权限设置好了才是正道~~~