標籤:問題: soft ssi 角色 系統資料庫 margin str mem 過程
http://www.cnblogs.com/syfblog/p/4651621.html
Sql Server Report Service 的部署問題
近期在研究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\ReportServer下的web.config、rsreportserver.config、 rssrvpolicy.config
2. C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportManager下的web.config
配置過程:
1. 找到兩個Web.config檔案中的如下代碼:
<authentication mode="Windows" />
<identity impersonate="true" />
替換成:
<authentication mode="None" />
<identity impersonate="false"/>
2. 找到rsreportserver.config檔案中的如下代碼:
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
<RSWindowsNTLM/>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
替換成:
<Authentication>
<AuthenticationTypes>
<Custom/>
</AuthenticationTypes>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>
3. 把檔案Microsoft.Samples.ReportingServices.AnonymousSecurity.dll放到C:\Program Files\Microsoft SQL Server\MSRS10.MSSQLSERVER\Reporting Services\ReportServer\bin目錄下(注意:目錄視具體安裝情況而定)
4. 找到rsreportserver.config檔案中的如下代碼:
<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. 找到檔案rssrvpolicy.config中的如下代碼:
</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差不多,可以採用預設的。這裡要注意到的是,由於我們之前採用的是匿名訪問的 方式,所以需要指定一個執行賬戶,這個千萬不能落了,不然會出問題的,在制定執行賬戶中,必須是你的系統資料庫有對應的賬戶的,不能憑空弄一個名字,這就 要求你在資料庫安全性中設定對應的賬戶名,並給其配置一定的角色許可權。
做到這裡,整個流程就差不多了,我們就可以查看報表結果了:
嗚呼,整個流程就這樣走通了~~中途中可能出現什麼程式集未能找到的問題,歸根結底還是使用者和許可權未設定好的問題,所以不要老想著去下載什麼程式集弄進去,先把賬戶和使用權限設定好了才是正道~~~
Sql Server Report Service 的部署問題(Reporting Service 2014為什麼不需要IIS就可以運行)