Reporting Services 與 AlwaysOn 可用性群組 (SQL Server)
本主題包含將 SQL Server 2012 Reporting Services 設定為使用 AlwaysOn 可用性群組 (AG) 的相關資訊。 使用 Reporting Services 和 AlwaysOn 可用性群組 的三種案例包括報表資料來源的資料庫、報表伺服器資料庫以及報表設計。 這三種案例的支援功能和必要組態有所不同。
使用 AlwaysOn 可用性群組 搭配 Reporting Services 資料來源的主要優點是能夠運用可讀取的次要複本做為報表資料來源,同時次要複本可針對主要資料庫提供容錯移轉。
如需有關 AlwaysOn 可用性群組 的一般資訊,請參閱<SQL Server 2012 AlwaysOn 常見問題集 (https://msdn.microsoft.com/en-us/sqlserver/gg508768)>。
本主題內容:
使用 Reporting Services 和 AlwaysOn 可用性群組的需求
報表資料來源和可用性群組
報表設計和可用性群組
報表伺服器資料庫和可用性群組
-
SharePoint 原生模式之間的差異
針對可用性群組準備報表伺服器資料庫
完成報表伺服器資料庫之災害復原的步驟
進行容錯移轉時的報表伺服器行為
使用 Reporting Services 和 AlwaysOn 可用性群組的需求
若要使用 AlwaysOn 可用性群組 搭配 SQL Server 2012 Reporting Services,您必須下載並安裝 .Net 3.5 SP1 的 Hotfix。 此 Hotfix 會加入 SQL 用戶端對於 AG 功能的支援,以及連接字串屬性 ApplicationIntent 和 MultiSubnetFailover 的支援。 如果裝載報表伺服器的每部電腦沒有安裝此 Hotfix,則嘗試預覽報表的使用者將會看見類似下面的錯誤訊息,而且該錯誤訊息將寫入報表伺服器追蹤記錄:
錯誤訊息:「不支援關鍵字 ‘applicationintent’」
當您在 Reporting Services 連接字串中加入其中一個 AlwaysOn 可用性群組 屬性,但是伺服器無法辨識該屬性時,就會出現此訊息。 如果報表伺服器已啟用遠端錯誤,當您在 Reporting Services 使用者介面中按一下 [測試連接] 按鈕以及預覽報表時,就會看見上述錯誤訊息。
如需有關必要 Hotfix 的詳細資訊,請參閱 KB 2654347:此 Hotfix 可將 AlwaysOn 功能的支援加入 .Net 3.5 SP1。
如需有關其他 AlwaysOn 可用性群組 需求的詳細資訊,請參閱<AlwaysOn 可用性群組的必要條件、限制和建議 (SQL Server)>。
[!附註]
AlwaysOn 可用性群組 功能不支援 Reporting Services 組態檔,例如 RSreportserver.config。 如果您對其中一個報表伺服器的組態檔進行手動變更,就必須手動更新複本。
回到頁首
報表資料來源和可用性群組
以 AlwaysOn 可用性群組 為基礎之 Reporting Services 資料來源的行為可能會因系統管理員設定 AG 環境的方式而異。
若要針對報表資料來源使用 AlwaysOn 可用性群組,您必須將報表資料來源連接字串設定為使用可用性群組的「接聽程式 DNS 名稱」(Listener DNS Name)。 支援的資料來源如下:
使用 SQL Native Client 的 ODBC 資料來源。
SQL 用戶端 (已將 .Net Hotfix 套用至報表伺服器)。
連接字串也可以包含新的 AlwaysOn 連接屬性,以便將報表查詢要求設定為使用唯讀報表的次要複本。 將次要複本用於報表要求可降低讀寫主要複本的負載。 下圖是三個複本 AG 組態的範例,其中 Reporting Services 資料來源連接字串已經使用 ApplicationIntent=ReadOnly 進行設定。 在此範例中,報表查詢要求會傳送至次要複本而非主要複本。
下面是範例連接字串,其中 [AvailabilityGroupListenerName] 是建立複本時所設定的 [接聽程式 DNS 名稱]:
Data Source=[AvailabilityGroupListenerName];Initial Catalog = AdventureWorks2008R2; ApplicationIntent=ReadOnly
Reporting Services 使用者介面中的 [測試連接] 按鈕將會驗證是否能夠建立連接,但是不會驗證 AG 組態。 例如,如果您在不屬於 AG 一部分之伺服器的連接字串中加入 ApplicationIntent,系統就會忽略額外的參數,而且 [測試連接] 按鈕只會驗證是否能夠建立指定之伺服器的連接。
報表的建立和發行方式將會決定您可以編輯連接字串的位置:
原生模式:您可以針對已經發行至原生模式報表伺服器的共用資料來源和報表使用報表管理員。
SharePoint 模式:您可以針對已經發行至 SharePoint 伺服器的報表使用文件庫中的 SharePoint 組態頁面。
**報表設計:**您可以在建立新報表時使用 適用於 SQL Server 2012 的 SQL Server 報表產生器 或 SQL Server 資料工具 (SSDT)。 如需詳細資訊,請參閱本主題的<報表設計>一節。
其他資源:
如需有關可用之連接字串屬性的詳細資訊,請參閱<搭配 SQL Server Native Client 使用連接字串關鍵字>。
如需有關可用性群組接聽程式的詳細資訊,請參閱<建立或設定可用性群組接聽程式 (SQL Server)>。
考量:接收來自主要複本的資料變更時,次要複本通常會發生延遲。 下列因素可能會影響主要與次要複本之間的更新延遲:
次要複本的數目。 延遲會隨著加入至組態的每個次要複本而增加。
主要與次要複本之間的地理位置和距離。 例如,如果次要複本與主要複本位於不同的資料中心,其延遲通常會比次要複本與主要複本位於相同建築物的延遲要長。
每個複本之可用性模式的組態。 可用性模式會決定在次要複本將交易寫入磁碟之前,主要複本是否要等候認可資料庫上的交易。 如需詳細資訊,請參閱<AlwaysOn 可用性群組概觀 (SQL Server)>的<可用性模式>一節。
使用唯讀次要複本做為 Reporting Services 資料來源時,請務必確定資料更新延遲符合報表使用者的需求。
回到頁首
報表設計和可用性群組
在 適用於 SQL Server 2012 的 SQL Server 報表產生器 中設計報表或在 SQL Server 資料工具 (SSDT) 中設計報表專案時,使用者可以將報表資料來源連接字串設定為包含 AlwaysOn 可用性群組 所提供的新連接屬性。 新連接屬性的支援主要取決於使用者預覽報表的位置。
本機預覽:適用於 SQL Server 2012 的 SQL Server 報表產生器 和 SQL Server 資料工具 (SSDT) 會使用 .Net Framework 4.0 並且支援 AlwaysOn 可用性群組 連接字串屬性。
遠端或伺服器模式預覽:如果將報表發行至報表伺服器或在 適用於 SQL Server 2012 的 SQL Server 報表產生器 中使用預覽功能之後,您看見類似下面的錯誤,就表示您正在根據報表伺服器預覽報表,而且報表伺服器尚未安裝 AlwaysOn 可用性群組 的 .Net Framework 3.5 SP1 Hotfix。
錯誤訊息:「不支援關鍵字 ‘applicationintent’」
回到頁首
報表伺服器資料庫和可用性群組
Reporting Services 對於使用 AlwaysOn 可用性群組 搭配報表伺服器資料庫提供有限的支援。 您可以在 AG 中將報表伺服器資料庫設定為複本的一部分,但在容錯移轉時,Reporting Services 不會自動為報表伺服器資料庫使用不同的複本。
您必須使用手動操作或自訂自動化指令碼,才能完成容錯移轉和復原。 完成這些動作之前,報表伺服器的某些功能可能會在 AlwaysOn 可用性群組 容錯移轉之後無法正確運作。
[!附註]
針對報表伺服器資料庫規劃容錯移轉和災害復原時,建議您一定要備份報表伺服器加密金鑰的複本。
回到頁首
SharePoint 原生模式之間的差異
本節將摘要說明 SharePoint 模式及原生模式報表伺服器與 AlwaysOn 可用性群組 互動的方式差異。
SharePoint 報表伺服器會為您所建立的每個 Reporting Services 服務應用程式建立 3 個資料庫。 當您建立服務應用程式時,會在 SharePoint 管理中心內設定 SharePoint 模式報表伺服器資料庫的連接。 資料庫的預設名稱包含關聯到服務應用程式的 GUID。 以下是 SharePoint 模式報表伺服器的範例資料庫名稱:
ReportingService_85c08ac3c8e64d3cb400ad06ed5da5d6
ReportingService_85c08ac3c8e64d3cb400ad06ed5da5d6TempDB
ReportingService_85c08ac3c8e64d3cb400ad06ed5da5d6_Alerting
原生模式報表伺服器會使用 2 個資料庫。 以下是原生模式報表伺服器的範例資料庫名稱:
ReportServer
ReportServerTempDB
原生模式不支援或使用警示資料庫及相關功能。 您可以在 Reporting Services 組態管理員中設定原生模式報表伺服器。 若為 SharePoint 模式,您可以將服務應用程式資料庫名稱設定為進行 SharePoint 組態設定時所建立之「用戶端存取點」的名稱。 如需有關使用 AlwaysOn 可用性群組 來設定 SharePoint 的詳細資訊,請參閱設定及管理 SharePoint Server 的 SQL Server 可用性群組 (https://go.microsoft.com/fwlink/?LinkId=245165)。
[!附註]
SharePoint 模式報表伺服器會在 Reporting Services 服務應用程式資料庫與 SharePoint 內容資料庫之間使用同步處理程序。 請務必一起維護報表伺服器資料庫和內容資料庫。 您應該考慮將它們設定在相同的可用性群組中,以便一起容錯移轉和復原。 請考慮下列案例:
您還原或容錯移轉至內容資料庫的複本,但是該資料庫尚未收到報表伺服器資料庫已經收到的相同近期更新。
Reporting Services 同步處理程序將會偵測到內容資料庫與報表伺服器資料庫的項目清單之間存在差異。
同步處理程序將會刪除或更新內容資料庫中的項目。
回到頁首
針對可用性群組準備報表伺服器資料庫
下面是準備將報表伺服器資料庫加入至 AlwaysOn 可用性群組 的基本步驟:
建立您的可用性群組並且設定「接聽程式 DNS 名稱」(Listener DNS Name)。
主要複本:將報表伺服器資料庫設定為單一可用性群組的一部分,並且建立包含所有報表伺服器資料庫的主要複本。 這包括
次要複本:建立一個或多個次要複本。 將資料庫從主要複本複製到次要複本的常見方法是使用 ‘RESTORE WITH NORECOVERY’,將資料庫還原至每個次要複本。 如需有關建立次要複本並確認資料同步處理是否運作的詳細資訊,請參閱<於 AlwaysOn 次要資料庫啟動資料移動 (SQL Server)>。
報表伺服器認證:您必須在次要與主要複本上建立適當的報表伺服器認證。 確切步驟主要取決於您在 Reporting Services 環境中使用的驗證類型:Windows Reporting Services 服務帳戶、Windows 使用者帳戶或 SQL Server 驗證。 如需詳細資訊,請參閱<設定報表伺服器資料庫連接 (原生模式)>
將資料庫連接更新為使用接聽程式 DNS 名稱。 若為原生模式報表伺服器,請在 Reporting Services 組態管理員中變更 [報表伺服器資料庫名稱]。 若為 SharePoint 模式,請變更 Reporting Services 服務應用程式的資料庫伺服器名稱。
回到頁首
完成報表伺服器資料庫之災害復原的步驟
您必須在 AlwaysOn 可用性群組 容錯移轉至次要複本之後完成下列步驟:
停止裝載 Reporting Services 資料庫之主要資料庫引擎所使用的 SQL 代理程式服務執行個體。
在成為新主要複本的電腦上啟動 SQL 代理程式服務。
停止報表伺服器服務。
如果報表伺服器處於原生模式,請使用 Reporting Services 組態管理員來停止報表伺服器 Windows 伺服器。
如果報表伺服器設定為 SharePoint 模式,請在 SharePoint 管理中心內停止 Reporting Services 共用服務。
啟動報表伺服器服務或 Reporting Services SharePoint 服務。
確認報表可以根據新的主要複本執行。
回到頁首
進行容錯移轉時的報表伺服器行為
當報表伺服器資料庫容錯移轉,而且您已經將報表伺服器環境更新為使用新的主要複本時,容錯移轉和復原程序會產生一些作業問題。 這些問題的影響會因下列條件而異:容錯移轉時的 Reporting Services 負載、AlwaysOn 可用性群組 容錯移轉至次要複本所需的時間長度,以及報表伺服器管理員將報表環境更新為使用新主要複本所需的時間長度。
由於重試邏輯以及報表伺服器無法在容錯移轉期間將排程的工作標記為已完成,因此背景處理的執行可能會發生一次以上。
通常已經觸發要在容錯移轉期間執行的背景處理執行將不會發生,因為 SQL Server Agent 無法將資料寫入報表伺服器資料庫中,而且這項資料不會同步處理至新的主要複本。
在資料庫容錯移轉完成而且報表伺服器服務重新啟動之後,系統將會自動重新建立 SQL Server Agent 作業。 在建立 SQL 代理程式作業之前,系統將不會處理任何與 SQL Server Agent 作業相關聯的背景執行。 這包括 Reporting Services 訂閱、排程和快照集。
回到頁首
請參閱
概念
高可用性/災害復原的 SQL Server Native Client 支援
開始使用 AlwaysOn 可用性群組 (SQL Server)
搭配 SQL Server Native Client 使用連接字串關鍵字