共用方式為


編寫部署和管理工作的指令碼

更新: 2006 年 12 月 12 日

Reporting Services 支援使用指令碼,以自動執行例行安裝、部署和管理工作。部署報表伺服器是一個多步驟的程序,您必須使用數個工具和程序來設定部署;並沒有單一個程式或方法可用來自動化處理所有工作。

不是每一個步驟都應該自動化;在某些情況下,手動執行步驟或是透過圖形工具是最簡單且最有效的方法。例如,如果您想要部署大量的報表和模型,則複製報表伺服器資料庫要比撰寫程式碼來重新建立報表伺服器內容更為理想。

某些步驟需要自訂程式碼;例如,只有當您撰寫自訂程式碼來呼叫報表伺服器 Windows Management Instrumentation (WMI) 提供者時,才可以讓虛擬目錄和 Web 服務的設定自動化。如果您不想要撰寫程式碼,必須使用 Reporting Services 組態工具來執行此步驟。

若要執行設定報表伺服器的指令碼,您必須是設定電腦上的本機管理員。如需詳細資訊,請參閱<設定報表伺服器來進行遠端管理>。

此主題描述自動化特定步驟的建議方法。其中會提及數個程式和程式設計介面,此主題會進一步說明各程式和程式設計介面。

部署工作及自動化這些工作的方式

下表摘要列出部署報表伺服器所需的所有安裝和組態工作,您可以使用這個表,比對特定的工作以及讓您自動化或自主 (Unattended) 執行工作的方法。

工作 方法

安裝 Reporting Services。

您可以從命令列執行安裝程式,以執行自動安裝。

只有當您選擇預設組態選項,而且系統符合該安裝類型的所有需求時,才可以使用安裝程式來安裝及設定報表伺服器。如果您無法安裝預設組態,必須執行僅限檔案的安裝。如需有關安裝選項的詳細資訊,請參閱<利用安裝程式來安裝 Reporting Services>。

在 Internet Information Services (IIS) 中設定網站

Reporting Services 並沒有任何功能可以建立或設定網站;如需有關自動化這個工作的詳細資訊,請參閱 IIS 產品文件集。

設定報表伺服器 Web 服務和虛擬目錄

您必須撰寫自訂程式碼來呼叫報表伺服器 WMI 提供者,並沒有任何命令列公用程式或指令碼範本可用來設定此 Web 服務及指定虛擬目錄。

如果編碼需求讓您無法自動化這個步驟,您可以藉由執行 Reporting Services 組態工具,以手動方式輕鬆地設定此 Web 服務和虛擬目錄。如需詳細資訊,請參閱<設定報表伺服器虛擬目錄>。

建立、升級或設定報表伺服器資料庫

請從下列自動化資料庫組態的方法中進行選擇:

  • 從預先定義的指令碼範本建立指令碼 GenerateNewDatabaseScript.sql、UpgradeDatabaseScript.sql 或 GrantRightsScript.sql,您可以從 Reporting Services 組態工具或呼叫 Windows Management Instrumentation (WMI) 提供者來產生這些指令碼。您可以使用 osql 公用程式,從命令列以程式設計方式執行指令碼,或從 Management Studio 中的查詢視窗執行指令碼。
  • 執行 rsconfig 公用程式來設定連接,但是不能使用 rsconfig.exe 來建立或升級資料庫。如果您使用 rsconfig,請務必執行 GrantRightsScript,授與報表伺服器資料庫的權限。您必須針對每個服務帳戶重新產生和執行指令碼。重新產生和執行指令碼的次數,會視您當初設定報表伺服器資料庫連接的方式而定。由於有兩個服務帳戶,因此您必須重新產生和執行指令碼兩次。

設定向外延展部署。

請從下列自動化向外延展部署的方法中進行選擇:

  • 執行 rskeymgmt.exe 公用程式,將報表伺服器執行個體聯結到現有的安裝。如需詳細資訊,請參閱<加入和移除向外延展部署的加密金鑰>。
  • 撰寫可對報表伺服器 WMI 提供者執行的自訂程式碼。

備份加密金鑰。

請從下列自動化加密金鑰備份的方法中進行選擇:

  • 執行 rskeymgmt.exe 公用程式來備份這些金鑰。如需詳細資訊,請參閱<備份與還原加密金鑰>。
  • 撰寫可對報表伺服器 WMI 提供者執行的自訂程式碼。

設定報表伺服器電子郵件。

撰寫可對 Reporting Services WMI 提供者執行的自訂程式碼。提供者支援電子郵件組態設定的子集。

雖然 RSReportServer.config 檔案包含所有設定,但請不要以自動方式使用檔案。亦即,請不要使用批次檔複製檔案到其他報表伺服器。每個組態檔都包含適用於目前執行個體的值。這些值對其他報表伺服器執行個體無效。

如需有關設定的詳細資訊,請參閱<設定報表伺服器的電子郵件傳遞>。

設定自動執行帳戶。

請從下列讓自動處理帳戶組態自動化的方法中進行選擇:

  • 執行 rsconfig.exe 公用程式來設定此帳戶。如需詳細資訊,請參閱<設定自動報表處理的帳戶>。
  • 撰寫可呼叫報表伺服器 WMI 提供者的自訂程式碼。

部署現有的報表伺服器環境,包括資料夾階層、角色指派、報表、訂閱、排程、資料來源和資源。

重新建立現有報表伺服器環境的最佳方式,就是將報表伺服器資料庫複製到新的報表伺服器執行個體;

還有一個替代方法,就是撰寫以程式設計方式重新建立現有報表伺服器內容的自訂程式碼。不過,請注意,訂閱、報表快照集和報表記錄不能以程式設計方式重新建立。

某些部署會因為將這兩種技術一起使用而獲益 (也就是還原報表伺服器資料庫,然後執行會針對特定安裝而修改報表伺服器資料庫的自訂程式碼)。

如需有關重新放置報表伺服器資料庫的詳細資訊,請參閱<將報表伺服器資料庫移至其他電腦>。如需有關以程式設計方式建立報表伺服器環境的詳細資訊,請參閱本主題的「複製報表伺服器環境」一節。

自動化伺服器部署的工具和技術

下列清單摘要列出可用來自動化部署和維護工作的程式與介面。

  • 安裝程式可以在自動模式中執行,以便安裝報表伺服器元件,有時也可以進行設定。您必須選擇「僅限檔案」安裝選項,才能讓安裝程式設定報表伺服器執行個體。
  • 報表伺服器 WMI 提供者和 Reporting Services 命令列公用程式可用於本機和遠端伺服器組態。
    報表伺服器 WMI 提供者會公開類別、屬性和方法,好讓您能夠設定 Reporting Services 安裝的所有層面,包括指定服務帳戶、設定虛擬目錄、建立及設定報表伺服器資料庫,或是設定報表伺服器以進行電子郵件傳遞。您必須撰寫自訂程式碼或指令碼,才能使用 WMI 提供者。如需詳細資訊,請參閱<Reporting Services WMI Provider>。
    撰寫程式碼的替代方案是使用命令列公用程式 (rsconfig.exe 和 rskeymgmt.exe),您可以撰寫批次檔來執行這些公用程式,這些公用程式可用來自動化某些組態工作,而不是所有組態工作。
  • 指令碼範本可讓您產生可立即使用的指令碼來建立、升級及設定報表伺服器資料庫;您可以從 Reporting Services 組態工具產生指令碼。
  • 報表伺服器 Script Host 工具 (rs.exe) 可以執行您可能會撰寫的自訂 Visual Basic 程式碼,以便重新建立現有內容,或是在報表伺服器之間移動現有內容。當您使用這個方法時,會使用 Visual Basic 撰寫指令碼,並將它儲存為 .rss 檔案,然後在目標報表伺服器上使用 rs.exe 來執行此指令碼;您所撰寫的指令碼可以呼叫報表伺服器 Web 服務的 SOAP 介面。部署指令碼是使用這種方法所撰寫,因為它可讓您重新建立報表伺服器資料夾命名空間與內容,以及重新建立以角色為基礎的安全性。
    您也可以使用 rs.exe 來執行您在 SQL Server Management Studio 中建立的自訂指令碼或產生的指令碼。如果是 Reporting Services,Management Studio 中的指令碼產生功能會針對非常特定的工作 (例如,建立角色、設定報表屬性、定義排程等等) 建立 Visual Basic 程式碼。所產生的程式碼是不完整的;它會擷取鍵盤按鍵動作和滑鼠事件。若要使用這段程式碼,您必須將它複製到您所建立的較大程式中。
ms159720.note(zh-tw,SQL.90).gif附註:
相較於舊版的 Reporting Services,您在這個版本中不再能夠使用安裝程式來部署所有可能的報表伺服器組態。如果您想要設定向外延展部署或使用遠端 SQL Server 執行個體來主控報表伺服器資料庫,必須撰寫指令碼或執行命令列公用程式。此外,SQL Server 2005 中也已經更新報表伺服器 WMI 提供者;如果您想要重複使用之前對舊版 WMI 提供者所撰寫的指令碼,您必須修改這些指令碼來使用新的端點。

複製報表伺服器環境

您可以撰寫指令碼來複製另一個報表伺服器執行個體上的報表伺服器環境。部署指令碼通常以 Visual Basic 撰寫,然後使用報表伺服器 Script Host 公用程式處理。

使用指令碼,即可將資料夾、共用資料來源、資源、報表、角色指派以及設定從一部伺服器複製到另一部伺服器。您為某個報表伺服器執行個體撰寫一個指令碼,然後在另一部伺服器上執行此指令碼,以重新建立報表伺服器命名空間。如果您的報表服務部署中有多個報表伺服器,可以分別在每一個伺服器上執行指令碼,以相同方式設定所有伺服器。

下列清單描述將報表從一部伺服器移轉到另一部伺服器的步驟。

  1. 將您的指令碼變數設定為來源報表伺服器的 URL。
  2. 使用 GetReportDefinition 方法和 GetProperties 方法,即可擷取報表的報表定義與屬性。
  3. 將 URL 設定為指向目的地伺服器。
  4. 使用 CreateReport 方法,傳遞從 GetProperties 傳回的屬性,以及 GetReportDefinition 傳回的報表定義。

藉由使用各種 get 與 create 方法的組合,您可以執行類似的步驟來移轉設定、資料夾、共用資料來源以及資源。如需有關可用方法的詳細資訊,請參閱<Reporting Services Managed 程式設計參考>(英文)。

ms159720.note(zh-tw,SQL.90).gif附註:
除非明確設定了認證,否則利用執行指令碼之使用者的 Microsoft Windows 認證來執行指令碼。

如需有關指令碼範例的詳細資訊,請參閱<指令碼範例 (Reporting Services)>。如需有關如何格式化與執行指令碼檔案的詳細資訊,請參閱<Scripting with the rs Utility and the Web Service>。

設定伺服器屬性的範例指令碼

您可以撰寫指令碼或程式碼來設定報表伺服器上的系統屬性。下列 Microsoft Visual Basic .NET 指令碼會示範設定屬性的一個方式,這個範例會停用 RSClientPrint ActiveX 控制項,但是您可以用任何有效的屬性名稱和值來取代 EnableClientPrintingFalse。若要檢視完整的伺服器屬性清單,請參閱<Report Server System Properties>。

若要使用此指令碼,請將它儲存為 .rss 副檔名的檔案,然後使用 rs.exe 命令提示字元公用程式,在報表伺服器上執行這個檔案。不會編譯此指令碼,所以不需要安裝 Visual Basic。這個範例假設您在主控報表伺服器的本機電腦上具有權限。如果您不是在具有權限的帳戶之下登入,您必須透過其他命令列引數來指定帳戶資訊。如需詳細資訊,請參閱<rs 公用程式>。

Public Sub Main()
        Dim props(0) As [Property]
        Dim setProp As New [Property]
        setProp.Name = "EnableClientPrinting"
        setProp.Value = “False” 
        props(0) = setProp
        Try
            rs.SetSystemProperties(props)
        Catch ex As System.Web.Services.Protocols.SoapException
            Console.Write(ex.Detail.InnerXml)
        Catch e as Exception
            Console.Write(e.Message)
        End Try
End Sub

請參閱

概念

管理 Reporting Services
報表伺服器命令提示字元公用程式
Reporting Services 中的瀏覽器支援
Reporting Services 元件概觀

其他資源

GenerateDatabaseCreationScript Method (WMI MSReportServer_ConfigurationSetting Class)
GenerateDatabaseRightsScript Method (WMI MSReportServer_ConfigurationSetting Class)
GenerateDatabaseUpgradeScript Method (WMI MSReportServer_ConfigurationSetting Class)
如何:從命令提示字元安裝 SQL Server 2005
報表伺服器安裝的預設組態
部署 Reporting Services

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

變更的內容:
  • 建立、升級或設定報表伺服器資料庫
  • 設定報表伺服器電子郵件。

2006 年 7 月 17 日

新增內容:
  • 已新增一個範例來說明如何透過指令碼設定伺服器屬性。

2006 年 4 月 14 日

變更的內容:
  • 重大修訂。