銷售: 1-800-867-1380

使用 PowerShell 建立具有原生模式報表伺服器的 Azure VM

更新日期: 2014年12月

本主題將描述並逐步引導您在 Azure 虛擬機器中部署及設定 SQL Server Reporting Services 原生模式報表伺服器。本文件中的步驟結合了以手動步驟建立虛擬機器和使用 Windows PowerShell 指令碼在 VM 上設定 Reporting Services 的方式。組態指令碼包含開啟 HTTP 或 HTTPS 的防火牆連接埠。

note附註
如果您的報表伺服器不需要 HTTPS,請略過步驟 2

在執行步驟 1 建立 VM 之後,即前往<使用指令碼設定報表伺服器和 HTTP>一節。當您執行指令碼之後,報表伺服器便已備妥可供使用。

  

本主題內容:

  • Azure 訂閱:確認您的 Azure 訂閱中可用的核心數目。如果您依照建議建立 A3 的 VM 大小,則需要 4 個可用核心。若是使用 A2 的 VM 大小,則需要 2 個可用核心。

    若要確認訂閱的核心限制,請在 Azure 管理入口網站 中按一下左窗格中的 [設定],然後在上層功能表中按一下 [使用情形]。

    若要增加核心配額,請連絡 Azure 支援。如需 VN 大小資訊,請參閱 Azure 的虛擬機器和雲端服務大小

  • Windows PowerShell 指令碼編寫:本主題假設您對 Windows PowerShell 具備基本的實用知識。如需有關使用 Windows PowerShell 的詳細資訊,請參閱下列主題:

搭配回到頁首連結使用的箭頭圖示 Top

  1. 瀏覽至 Azure 管理入口網站

  2. 按一下左窗格中的 [虛擬機器]

    Windows Azure 虛擬機器
  3. 按一下 [新增]

    新按鈕
  4. 按一下 [從組件庫]

    主機庫中的新 VM
  5. 按一下 [SQL Server 2014 RTM Standard – Windows Server 2012 R2],然後按一下箭號繼續作業。

    下一步   

    如果您需要 Reporting Services 資料驅動訂閱功能,請選擇 [SQL Server 2014 RTM Enterprise – Windows Server 2012 R2]。如需 SQL Server 版本和功能支援的詳細資訊,請參閱 SQL Server 2012 各版本的支援功能

  6. [虛擬機器組態] 頁面上,編輯下列欄位:

    • 如果有多個 [版本發行日期],請選取最新版本。

    • 虛擬機器名稱:此機器名稱在下一個組態頁面中也將使用做為預設的雲端服務 DNS 名稱。DNS 名稱在 Azure 服務中必須是唯一的。考慮以能夠描述 VM 用途的電腦名稱來設定 VM。例如 ssrsnativecloud

    • 層: Standard

    • 大小:A3 是建議用於 SQL Server 工作負載的 VM 大小。若 VM 只是當做報表伺服器使用,則 A2 的 VM 大小就已足夠,除非報表伺服器會面臨大量的工作負載。如需 VM 定價資訊,請參閱虛擬機器定價

    • 新的使用者名稱:您所提供的名稱會建立成為 VM 的系統管理員。

    • 新密碼確認新密碼:此密碼將供新的系統管理員帳戶使用,建議您使用增強式密碼。

    • [下一步]下一步

  7. 在下一頁編輯下列欄位:

    1. 雲端服務:選取 [建立新的雲端服務]。

    2. 雲端服務 DNS 名稱:這是與 VM 相關聯之雲端服務的公開 DNS 名稱。預設名稱是您針對 VM 名稱所輸入的名稱。如果您在本主題稍後的步驟中建立受信任的 SSL 憑證,該憑證的 [發給] 值將會使用此 DNS 名稱。

    3. 區域/同質群組/虛擬網路:選擇最靠近您使用者的地區。

    4. 儲存體帳戶:使用自動產生的儲存體帳戶。

    5. 可用性設定組:無。

    6. 端點 保留 [遠端桌面] 和 [PowerShell] 端點,然後加入 HTTP 或 HTTPS 端點,視您的環境而定。

      • HTTP:預設的公用及私用通訊埠為 80

        note附註
        如果您使用 80 以外的私用連接埠,請修改 http 指令碼中的 $HTTPport = 80

      • HTTPS:預設的公用及私用通訊埠為 443。最佳安全性作法是變更私用通訊埠,並將防火牆和報表伺服器設定為使用私用通訊埠。如需端點的詳細資訊,請參閱如何設定與虛擬機器的通訊

      note附註
      如果您使用 443 以外的連接埠,請變更 HTTPS 指令碼中的 $HTTPsport = 443 參數。

    7. 按 [下一步] 下一步

  8. 在精靈的最後一個頁面上,保留依預設選取的 [安裝 VM 代理程式]。本主題中的步驟不會使用 VM 代理程式,但如果您打算保留此 VM,VM 代理程式和延伸模組將可讓您強化 CM。如需 VM 代理程式的詳細資訊,請參閱 VM 代理程式和延伸模組 – 第 1 部分。其中一個安裝並執行的預設延伸模組為 VM 桌面上的 “BGINFO” 延伸模組,顯示如內部 IP 和可用磁碟機空間之類的系統資訊。

  9. 按一下完成 確定

  10. VM 的 [狀態] 在佈建過程中會顯示為 [正在啟動 (正在佈建)],而當 VM 已佈建就緒可供使用後則將顯示為 [正在執行]。

搭配回到頁首連結使用的箭頭圖示 Top

note附註
如果您的報表伺服器不需要 HTTPS,您可以略過步驟 2,並前往<使用指令碼設定報表伺服器和 HTTP>一節。使用 HTTP 指令碼快速設定報表伺服器,之後報表伺服器即已備妥可供使用。

若要在 VM 上使用 HTTPS,您將需要受信任的 SSL 憑證。視您的情況而定,您可以使用下列兩種方法的其中一種:

  1. 向憑證授權單位申請伺服器憑證供網站使用:

    您可以使用 Web 伺服器憑證精靈,產生憑證要求檔案 (Certreq.txt) 後傳送至憑證授權單位,或是產生要求以送交線上憑證授權單位,例如 Windows Server 2012 的 Microsoft 憑證服務。視您的伺服器憑證所提供的識別保證層級而定,需要數天到數月的時間等候憑證授權單位核准您的申請並將憑證檔案寄給您。

    如需有關申請伺服器憑證的詳細資訊,請參閱下列主題:

    Important重要事項
    受信任 SSL 憑證的 [發給] 欄位應該與新的 VM 所使用的 [雲端服務 DNS 名稱] 相同。

  2. 在 Web 伺服器上安裝伺服器憑證: 本例中的 Web 伺服器是託管報表伺服器的 VM,而網站則是您在後續步驟設定 Reporting Services 時所建立。如需如何使用 [憑證] MMC 嵌入式管理單元將伺服器憑證安裝在 Web 伺服器上的詳細資訊,請參閱安裝伺服器憑證

    如果您要使用本主題隨附的指令碼設定報表伺服器,便需要憑證的 [憑證指紋] 值做為指令碼的參數。如需有關如何取得憑證指紋的詳細資訊,請參閱下一節。

  3. 將伺服器憑證指派給報表伺服器。您會在下一節設定報表伺服器時完成指派作業。

搭配回到頁首連結使用的箭頭圖示 Top

佈建 VM 時,會在 VM 上建立自我簽署憑證。此憑證的名稱與 VM DNS 名稱相同。為避免憑證錯誤,憑證除了必須受到 VM 本身信任之外,還要受到網站的所有使用者信任。

  1. 若要讓本機 VM 信任憑證的根 CA,請將憑證加入至 [受信任的根憑證授權單位] 存放區。以下是必要步驟的摘要。如需如何信任 CA 的詳細步驟,請參閱安裝伺服器憑證

    1. 從 Azure 管理入口網站選取 VM,然後按一下 [連接]。根據您的瀏覽器設定,系統可能會提示您儲存 .rdp 檔案,用以連接到 VM。

      連接至 Azure 虛擬機器 請使用您在建立 VM 時設定的 VN 名稱、使用者名稱和密碼。例如,在下圖中,VM 名稱是 ssrsnativecloud,使用者名稱是 testuser

      登入包含 vm 名稱
    2. 執行 mmc.exe。如需詳細資訊,請參閱作法:使用 MMC 嵌入式管理單元檢視憑證

    3. 在主控台應用程式的 [檔案] 功能表中加入 [憑證] 嵌入式管理單元,出現提示時選取 [電腦帳戶],然後按 [下一步]。

    4. 選取 [本機電腦] 進行管理,然後按一下 [完成]

    5. 按一下 [確定]、展開 [憑證 - 個人] 節點,然後按一下 [憑證]。憑證是依據 VM 的 DNS 名稱命名並以 cloudapp.net 結尾。以滑鼠右鍵按一下憑證名稱,然後按一下 [複製]

    6. 展開 [受信任的根憑證授權單位] 節點,再以滑鼠右鍵按一下 [憑證],然後按一下 [貼上]

    7. 若要進行驗證,請在 [受信任的根憑證授權單位] 下按兩下憑證名稱,以確認並無任何錯誤,並檢視您的憑證。如果您要使用本主題隨附的 HTTPS 指令碼設定報表伺服器,則必須以憑證的 [憑證指紋] 值做為指令碼的參數。若要取得憑證指紋值,請完成下列步驟。在使用指令碼設定報表伺服器和 HTTPS一節中也有 PowerShell 範例可用來擷取憑證指紋。

      1. 按兩下憑證的名稱,例如 ssrsnativecloud.cloudapp.net

      2. 按一下 [詳細資料] 索引標籤。

      3. 按一下 [憑證指紋]。憑證指紋的值會顯示在詳細資料欄位內,例如 ‎a6 08 3c df f9 0b f7 e3 7c 25 ed a4 ed 7e ac 91 9c 2c fb 2f

      4. 複製憑證指紋並儲存其值供稍後使用,或是現在編輯指令碼。

      5. (*) 執行指令碼之前,請先移除配對值中間的空格。例如,前述的憑證指紋現在會是 ‎a6083cdff90bf7e37c25eda4ed7eac919c2cfb2f

  2. 將伺服器憑證指派給報表伺服器。您會在下一節設定報表伺服器時完成指派作業。

如果您使用自我簽署 SSL 憑證,該憑證的名稱就會與 VM 的主機名稱一致。這表示電腦的 DNS 已向全球註冊,並可從任何用戶端存取。

搭配回到頁首連結使用的箭頭圖示 Top

本節會引導您將 VM 設定為 Reporting Services 原生模式報表伺服器。您可以使用下列其中一種方法設定報表伺服器:

如需詳細步驟,請參閱連接到虛擬機器並啟動 Reporting Services 組態管理員一節。

驗證注意事項: Windows 驗證是建議的驗證方法,而且也是預設的 Reporting Services 驗證。唯有在此 VM 上設定的使用者能夠存取 Reporting Services 並獲指派為 Reporting Services 角色。

若要使用 Windows PowerShell 指令碼設定報表伺服器,請完成下列步驟。此設定包含 HTTP,而不是 HTTPS:

  1. 從 Azure 管理入口網站選取 VM,然後按一下 [連接]。根據您的瀏覽器設定,系統可能會提示您儲存 .rdp 檔案,用以連接到 VM。

    連接至 Azure 虛擬機器 請使用您在建立 VM 時設定的 VN 名稱、使用者名稱和密碼。例如,在下圖中,VM 名稱是 ssrsnativecloud,使用者名稱是 testuser

    登入包含 vm 名稱
  2. 在 VM 上,以系統管理權限開啟 Windows PowerShell ISE。Windows Server 2012 預設會安裝 PowerShell ISE。建議您使用 ISE 代替標準 Windows PowerShell 視窗,這樣您就可以將指令碼貼到 ISE 再修改指令碼,然後執行指令碼。

  3. 在 Windows PowerShell ISE 中,按一下 [檢視] 功能表,然後按一下 [顯示指令碼窗格]

  4. 複製下列指令碼,並將指令碼貼到 Windows PowerShell ISE 指令碼窗格中。

    ## This script configures a Native mode report server without HTTPS
    $ErrorActionPreference = "Stop"
    
    $server = $env:COMPUTERNAME
    $HTTPport = 80 # change the value if you used a different port for the private HTTP endpoint when the VM was created.
    
    ## Set PowerShell execution policy to be able to run scripts
    Set-ExecutionPolicy RemoteSigned -Force
    
    ## Utility method for verifying an operation's result
    function CheckResult
    {
        param($wmi_result, $actionname)
        if ($wmi_result.HRESULT -ne 0) {
            write-error "$actionname failed. Error from WMI: $($wmi_result.Error)"
        }
    }
    
    $starttime=Get-Date
    write-host -foregroundcolor DarkGray $starttime StartTime
    
    ## ReportServer Database name - this can be changed if needed
    $dbName='ReportServer'
    
    ## Register for MSReportServer_ConfigurationSetting
    ## Change the version portion of the path to "v11" to use the script for SQL Server 2012
    $RSObject = Get-WmiObject -class "MSReportServer_ConfigurationSetting" -namespace "root\Microsoft\SqlServer\ReportServer\RS_MSSQLSERVER\v12\Admin"
    
    ## Report Server Configuration Steps
    
    ## Setting the web service URL ##
    write-host -foregroundcolor green "Setting the web service URL"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## SetVirtualDirectory for ReportServer site
        write-host 'Calling SetVirtualDirectory'
        $r = $RSObject.SetVirtualDirectory('ReportServerWebService','ReportServer',1033)
        CheckResult $r "SetVirtualDirectory for ReportServer"
    
    ## ReserveURL for ReportServerWebService - port $HTTPport (for local usage)
        write-host "Calling ReserveURL port $HTTPport"
        $r = $RSObject.ReserveURL('ReportServerWebService',"http://+:$HTTPport",1033)
        CheckResult $r "ReserveURL for ReportServer port $HTTPport" 
       
    ## Setting the Database ##
    write-host -foregroundcolor green "Setting the Database"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## GenerateDatabaseScript - for creating the database
        write-host "Calling GenerateDatabaseCreationScript for database $dbName"
        $r = $RSObject.GenerateDatabaseCreationScript($dbName,1033,$false)
        CheckResult $r "GenerateDatabaseCreationScript"
        $script = $r.Script
    
    ## Execute sql script to create the database
        write-host 'Executing Database Creation Script'
        $savedcvd = Get-Location
        Import-Module SQLPS              ## this automatically changes to sqlserver provider
        Invoke-SqlCmd -Query $script
        Set-Location $savedcvd
      
    ## GenerateGrantRightsScript 
        $DBUser = "NT Service\ReportServer"
        write-host "Calling GenerateDatabaseRightsScript with user $DBUser"
        $r = $RSObject.GenerateDatabaseRightsScript($DBUser,$dbName,$false,$true)
        CheckResult $r "GenerateDatabaseRightsScript"
        $script = $r.Script
    
    ## Execute grant rights script
        write-host 'Executing Database Rights Script'
        $savedcvd = Get-Location
        cd sqlserver:\
        Invoke-SqlCmd -Query $script
        Set-Location $savedcvd
    
    ## SetDBConnection - uses Windows Service (type 2), username is ignored
        write-host "Calling SetDatabaseConnection server $server, DB $dbName"
        $r = $RSObject.SetDatabaseConnection($server,$dbName,2,'','')
        CheckResult $r "SetDatabaseConnection"  
    
    ## Setting the Report Manager URL ##
    
    write-host -foregroundcolor green "Setting the Report Manager URL"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## SetVirtualDirectory for Reports (Report Manager) site
        write-host 'Calling SetVirtualDirectory'
        $r = $RSObject.SetVirtualDirectory('ReportManager','Reports',1033)
        CheckResult $r "SetVirtualDirectory"
    
    ## ReserveURL for ReportManager  - port $HTTPport
        write-host "Calling ReserveURL for ReportManager, port $HTTPport"
        $r = $RSObject.ReserveURL('ReportManager',"http://+:$HTTPport",1033)
        CheckResult $r "ReserveURL for ReportManager port $HTTPport"
    
    write-host -foregroundcolor green "Open Firewall port for $HTTPport"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## Open Firewall port for $HTTPport
        New-NetFirewallRule -DisplayName “Report Server (TCP on port $HTTPport)” -Direction Inbound –Protocol TCP –LocalPort $HTTPport
        write-host "Added rule Report Server (TCP on port $HTTPport) in Windows Firewall"
    
    write-host 'Operations completed, Report Server is ready'
    write-host -foregroundcolor DarkGray $starttime StartTime
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time 
    
    
  5. 如果您使用 80 以外的 HTTP 連接埠建立 VM,請修改 $HTTPport = 80 參數。

  6. 指令碼目前是針對 Reporting Services 而設定的。如果您要執行適用於 Reporting Services 的指令碼,請在 Get-WmiObject 陳述式中,將命名空間路徑的版本部分修改為 “v11”。

  7. 執行指令碼。

驗證:若要確認報表伺服器基本功能是否正常運作,請參閱本主題稍後的<確認組態>一節。

搭配回到頁首連結使用的箭頭圖示 Top

若要使用 Windows PowerShell 設定報表伺服器,請完成下列步驟。此設定包含 HTTPS,而不是 HTTP:

  1. 從 Azure 管理入口網站選取 VM,然後按一下 [連接]。根據您的瀏覽器設定,系統可能會提示您儲存 .rdp 檔案,用以連接到 VM。

    連接至 Azure 虛擬機器 請使用您在建立 VM 時設定的 VN 名稱、使用者名稱和密碼。例如,在下圖中,VM 名稱是 ssrsnativecloud,使用者名稱是 testuser

    登入包含 vm 名稱
  2. 在 VM 上,以系統管理權限開啟 Windows PowerShell ISE。Windows Server 2012 預設會安裝 PowerShell ISE。建議您使用 ISE 代替標準 Windows PowerShell 視窗,這樣您就可以將指令碼貼到 ISE 再修改指令碼,然後執行指令碼。

  3. 若要允許執行指令碼,請執行下列 Windows PowerShell 命令:

    Set-ExecutionPolicy RemoteSigned
    
    然後,您可以執行下列程式碼以驗證原則

    Get-ExecutionPolicy
    
  4. 在 Windows PowerShell ISE 中,按一下 [檢視] 功能表,然後按一下 [顯示指令碼窗格]

  5. 複製下列指令碼,並將其貼到 Windows PowerShell ISE 指令碼窗格中。

    ## This script configures the report server, including HTTPS
    $ErrorActionPreference = "Stop"
    $httpsport=443 # modify if you used a different port number when the HTTPS endpoint was created.
    
    # You can run the following command to get (.cloudapp.net certificates) so you can copy the thumbprint / certificate hash
    #dir cert:\LocalMachine -rec | Select-Object * | where {$_.issuer -like "*cloudapp*" -and $_.pspath -like "*root*"} | select dnsnamelist, thumbprint, issuer
    #
    # The certifacte hash is a REQUIRED parameter
    $certificatehash="" 
    # the certificate hash should not contain spaces
    
    if ($certificatehash.Length -lt 1) 
    {
        write-error "certificatehash is a required parameter"
    } 
    # Certificates should be all lower case
    $certificatehash=$certificatehash.ToLower()
    $server = $env:COMPUTERNAME
    # If the certificate is not a wildcard certificate, comment out the following line, and enable the full $DNSNAme reference.
    $DNSName="+"
    #$DNSName="$server.cloudapp.net"
    $DNSNameAndPort = $DNSName + ":$httpsport"
    
    ## Utility method for verifying an operation's result
    function CheckResult
    {
        param($wmi_result, $actionname)
        if ($wmi_result.HRESULT -ne 0) {
            write-error "$actionname failed. Error from WMI: $($wmi_result.Error)"
        }
    }
    
    $starttime=Get-Date
    write-host -foregroundcolor DarkGray $starttime StartTime
    
    ## ReportServer Database name - this can be changed if needed
    $dbName='ReportServer'
    
    write-host "The script will use $DNSNameAndPort as the DNS name and port" 
    
    ## Register for MSReportServer_ConfigurationSetting
    ## Change the version portion of the path to "v11" to use the script for SQL Server 2012
    $RSObject = Get-WmiObject -class "MSReportServer_ConfigurationSetting" -namespace "root\Microsoft\SqlServer\ReportServer\RS_MSSQLSERVER\v12\Admin"
    
    ## Reporting Services Report Server Configuration Steps
    
    ## 1. Setting the web service URL ##
    write-host -foregroundcolor green "Setting the web service URL"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## SetVirtualDirectory for ReportServer site
        write-host 'Calling SetVirtualDirectory'
        $r = $RSObject.SetVirtualDirectory('ReportServerWebService','ReportServer',1033)
        CheckResult $r "SetVirtualDirectory for ReportServer"
    
    ## ReserveURL for ReportServerWebService - port 80 (for local usage)
        write-host 'Calling ReserveURL port 80'
        $r = $RSObject.ReserveURL('ReportServerWebService','http://+:80',1033)
        CheckResult $r "ReserveURL for ReportServer port 80" 
    
    ## ReserveURL for ReportServerWebService - port $httpsport
        write-host "Calling ReserveURL port $httpsport, for URL: https://$DNSNameAndPort"
        $r = $RSObject.ReserveURL('ReportServerWebService',"https://$DNSNameAndPort",1033)
        CheckResult $r "ReserveURL for ReportServer port $httpsport" 
    
    ## CreateSSLCertificateBinding for ReportServerWebService port $httpsport
        write-host "Calling CreateSSLCertificateBinding port $httpsport, with certificate hash: $certificatehash"
        $r = $RSObject.CreateSSLCertificateBinding('ReportServerWebService',$certificatehash,'0.0.0.0',$httpsport,1033)
        CheckResult $r "CreateSSLCertificateBinding for ReportServer port $httpsport" 
        
    ## 2. Setting the Database ##
    write-host -foregroundcolor green "Setting the Database"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## GenerateDatabaseScript - for creating the database
        write-host "Calling GenerateDatabaseCreationScript for database $dbName"
        $r = $RSObject.GenerateDatabaseCreationScript($dbName,1033,$false)
        CheckResult $r "GenerateDatabaseCreationScript"
        $script = $r.Script
    
    ## Execute sql script to create the database
        write-host 'Executing Database Creation Script'
        $savedcvd = Get-Location
        Import-Module SQLPS                    ## this automatically changes to sqlserver provider
        Invoke-SqlCmd -Query $script
        Set-Location $savedcvd
      
    ## GenerateGrantRightsScript 
        $DBUser = "NT Service\ReportServer"
        write-host "Calling GenerateDatabaseRightsScript with user $DBUser"
        $r = $RSObject.GenerateDatabaseRightsScript($DBUser,$dbName,$false,$true)
        CheckResult $r "GenerateDatabaseRightsScript"
        $script = $r.Script
    
    ## Execute grant rights script
        write-host 'Executing Database Rights Script'
        $savedcvd = Get-Location
        cd sqlserver:\
        Invoke-SqlCmd -Query $script
        Set-Location $savedcvd
    
    ## SetDBConnection - uses Windows Service (type 2), username is ignored
        write-host "Calling SetDatabaseConnection server $server, DB $dbName"
        $r = $RSObject.SetDatabaseConnection($server,$dbName,2,'','')
        CheckResult $r "SetDatabaseConnection"  
    
    ## 3. Setting the Report Manager URL ##
    
    write-host -foregroundcolor green "Setting the Report Manager URL"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## SetVirtualDirectory for Reports (Report Manager) site
        write-host 'Calling SetVirtualDirectory'
        $r = $RSObject.SetVirtualDirectory('ReportManager','Reports',1033)
        CheckResult $r "SetVirtualDirectory"
    
    ## ReserveURL for ReportManager  - port 80
        write-host 'Calling ReserveURL for ReportManager, port 80'
        $r = $RSObject.ReserveURL('ReportManager','http://+:80',1033)
        CheckResult $r "ReserveURL for ReportManager port 80"
    
    ## ReserveURL for ReportManager - port $httpsport
        write-host "Calling ReserveURL port $httpsport, for URL: https://$DNSNameAndPort"
        $r = $RSObject.ReserveURL('ReportManager',"https://$DNSNameAndPort",1033)
        CheckResult $r "ReserveURL for ReportManager port $httpsport" 
    
    ## CreateSSLCertificateBinding for ReportManager port $httpsport
        write-host "Calling CreateSSLCertificateBinding port $httpsport with certificate hash: $certificatehash"
        $r = $RSObject.CreateSSLCertificateBinding('ReportManager',$certificatehash,'0.0.0.0',$httpsport,1033)
        CheckResult $r "CreateSSLCertificateBinding for ReportManager port $httpsport" 
    
    write-host -foregroundcolor green "Open Firewall port for $httpsport"
    write-host -foregroundcolor green ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    ## Open Firewall port for $httpsport
        New-NetFirewallRule -DisplayName “Report Server (TCP on port $httpsport)” -Direction Inbound –Protocol TCP –LocalPort $httpsport
        write-host "Added rule Report Server (TCP on port $httpsport) in Windows Firewall"
    
    write-host 'Operations completed, Report Server is ready'
    write-host -foregroundcolor DarkGray $starttime StartTime
    $time=Get-Date
    write-host -foregroundcolor DarkGray $time
    
    
     

  6. 修改指令碼的下列參數:

    1. $certificatehash::這是必要參數。如果您未儲存先前步驟中的憑證值,請使用下列其中一個方法,從憑證指紋中複製憑證雜湊值:

      • 在 VM 上,開啟 Windows PowerShell ISE 並執行下列命令:

        dir cert:\LocalMachine -rec | Select-Object * | where {$_.issuer -like "*cloudapp*" -and $_.pspath -like "*root*"} | select dnsnamelist, thumbprint, issuer
        
      • 輸出會顯示如下。如果指令碼傳回空白行,表示 VM 未設定憑證,例如,請參閱使用虛擬機器自我簽署憑證一節。



      1. 在 VM 上執行 mmc.exe,然後加入 [憑證] 嵌入式管理單元。

      2. [受信任的根憑證授權單位] 節點下,按兩下您的憑證名稱。如果您使用 VM 的自我簽署憑證,該憑證會依據 VM 的 DNS 名稱命名並以 cloudapp.net 結尾。

      3. 按一下 [詳細資料] 索引標籤。

      4. 按一下 [憑證指紋]。憑證指紋的值會顯示在詳細資料欄位內,例如 af 11 60 b6 4b 28 8d 89 0a 82 12 ff 6b a9 c3 66 4f 31 90 48

      5. 執行指令碼之前,請先移除配對值中間的空格。例如 af1160b64b288d890a8212ff6ba9c3664f319048

    2. $httpsport::如果您的 HTTPS 端點使用通訊埠 443,就不需要更新指令碼的這個參數。否則,請使用您在 VM 上設定 HTTPS 私用端點時選取的通訊埠值。

    3. $DNSName: 此指令碼是針對萬用字元憑證 $DNSName="+" 而設定的。如果您不想進行萬用字元憑證繫結的設定,請取消註解 $DNSName="+",並啟用下列命令列,也就是完整的 $DNSNAme 參考 ##$DNSName="$server.cloudapp.net"

      如果您不想要將虛擬機器的 DNS 名稱用於 Reporting Services,請變更 $DNSName 值。若是使用了這個參數,則憑證也必須使用此名稱,而且要向 DNS 伺服器全域註冊此名稱。

    4. 指令碼目前是針對 Reporting Services 而設定的。如果您要執行適用於 Reporting Services 的指令碼,請在 Get-WmiObject 陳述式中,將命名空間路徑的版本部分修改為 “v11”。

  7. 執行指令碼。

驗證:若要確認報表伺服器基本功能是否正常運作,請參閱本主題稍後的<確認組態>一節。若要確認憑證繫結,請以系統管理權限開啟命令提示字元,然後執行下列命令:

netsh http show sslcert

結果將會包含:

IP:port : 0.0.0.0:443

Certificate Hash : f98adf786994c1e4a153f53fe20f94210267d0e7

搭配回到頁首連結使用的箭頭圖示 Top

如果您不想透過執行 PowerShell 指令碼設定報表伺服器,請遵循本節的步驟使用 Reporting Services 原生模式組態管理員來設定報表伺服器。

  1. 從 Azure 管理入口網站選取 VM,然後按一下 [連接]。請使用您在建立 VM 時設定的使用者名稱和密碼。

    連接至 Azure 虛擬機器
  2. 執行 Windows Update 並安裝 VM 適用的更新。如果 VM 需要重新啟動,請重新啟動 VM,再從 Azure 管理入口網站重新連接至 VM。

  3. 從 VM 的 [開始] 功能表輸入 Reporting Services 並開啟 [Reporting Services 組態管理員]

  4. 保留 [伺服器名稱][報表伺服器執行個體] 的預設值。按一下 [連接]。

  5. 在左窗格中,按一下 [Web 服務 URL]

  6. 依預設,RS 會設定為 HTTP 通訊埠 80 且 IP 為 [全部指派]。若要加入 HTTPS:

    1. [SSL 憑證:]選取您要使用的憑證,例如 [VM name].cloudapp.net。如果未列出任何憑證,請參閱<步驟 2:建立伺服器憑證>一節,取得有關如何在 VM 上安裝及信任憑證的資訊。

    2. [SSL 通訊埠:] 下選擇 443。如果您在 VM 上以不同的私用通訊埠設定 HTTPS 私用端點,請於此處使用該值。

    3. 按一下 [套用] 並等候作業完成。

  7. 在左窗格中,按一下 [資料庫]

    1. 按一下 [變更資料庫]

    2. 按一下 [建立新的報表伺服器資料庫],然後按 [下一步]

    3. 保留 [伺服器名稱:] 的預設值為 VM 名稱,並保留 [驗證類型] 的預設值為 [目前使用者 – 整合式安全性]。按 [下一步]。

    4. 保留 [資料庫名稱] 的預設值為 [ReportServer],然後按 [下一步]

    5. 保留 [驗證類型] 的預設值為 [服務認證],然後按 [下一步]

    6. [摘要] 頁面上,按 [下一步]

    7. 於設定完成後,按一下 [完成]

  8. 在左窗格中,按一下 [報表管理員 URL]。保留 [虛擬目錄] 的預設值為 [Reports],然後按一下 [套用]

  9. 按一下 [結束] 關閉 Reporting Services 組態管理員。

搭配回到頁首連結使用的箭頭圖示 Top

note附註
如果您使用其中一個指令碼來設定報表伺服器,則可以略過本節。指令碼已包含了開啟防火牆通訊埠的步驟���HTTP 的預設連接埠是 80,HTTPS 的預設連接埠是 443。

若要從遠端連接到虛擬機器上的報表管理員或報表伺服器,在 VM 上必須有 TCP 端點。開啟 VM 防火牆內相同的通訊埠需要仰賴此端點。在佈建 VM 時,會建立此端點。

本節提供有關如何開啟防火牆通訊埠的基本資訊。如需詳細資訊,請參閱設定用於報表伺服器存取的防火牆

note附註
如果您是使用指令碼設定報表伺服器,就可以略過本節。指令碼已包含了開啟防火牆通訊埠的步驟���

如果您針對 HTTPS 設定了 443 以外的私用通訊埠,請據以修改下列指令碼。若要在 Windows 防火牆上開啟通訊埠 443,請完成下列步驟:

  1. 以系統管理權限開啟 Windows PowerShell 視窗。

  2. 如果您在 VM 上設定 HTTPS 端點時使用了 443 以外的通訊埠,請先更新下列命令中的通訊埠再執行該命令:

    New-NetFirewallRule -DisplayName “Report Server (TCP on port 443)” -Direction Inbound –Protocol TCP –LocalPort 443
    
  3. 當命令完成時,命令提示字元會顯示 OK

若要確認通訊埠是否已開啟,請開啟 Windows PowerShell 視窗,然後執行下列命令:

get-netfirewallrule | where {$_.displayname -like "*report*"} | select displayname,enabled,action

搭配回到頁首連結使用的箭頭圖示 Top

若要確認報表伺服器的基本功能可正常運作,請以系統管理權限開啟瀏覽器,然後瀏覽至下列報表伺服器和報表管理員 URL:

  • 在 VM 上瀏覽至報表伺服器 URL。

    http://localhost/reportserver
    
  • 在 VM 上瀏覽至報表管理員 URL。

    http://localhost/Reports
    
  • 從您的本機電腦瀏覽至 VM 上的遠端報表管理員。視需要更新下列範例中的 DNS 名稱。如果提示您輸入密碼,請使用您在佈建 VM 時建立的系統管理員認證。使用者名稱的格式為 [網域]\[使用者名稱],其中網域是 VM 電腦名稱,例如 ssrsnativecloud\testuser。若您不是使用 HTTPS,請移除 URL 中的 s。參閱下一節以取得在 VM 上建立其他使用者的資訊。

    https://ssrsnativecloud.cloudapp.net/Reports
    
  • 從您的本機電腦,瀏覽至遠端 VM 的報表伺服器 URL。視需要更新下列範例中的 DNS 名稱。若您不是使用 HTTPS,請移除 URL 中的 s

    https://ssrsnativecloud.cloudapp.net/ReportServer
    

搭配回到頁首連結使用的箭頭圖示 Top

報表伺服器設定完成且通過驗證後,常見的系統管理工作就是建立一個或多個使用者,並將使用者指派為 Reporting Services 角色。如需詳細資訊,請參閱下列內容:

搭配回到頁首連結使用的箭頭圖示 Top

下表摘要一些可用選項,以從內部部署電腦發行現有報表到 Microsoft Azure 虛擬機器中裝載的報表伺服器:

搭配回到頁首連結使用的箭頭圖示 Top

Tip提示
為了將 Azure 虛擬機器的費用降至最低,請在您不必使用 VM 時從 Azure 管理入口網站予以關閉。如果您使用 VM 內的 Windows 電源選項關閉 VM,則仍然需要為 VM 支付等值的費用。若要降低費用,您必須從 Azure 管理入口網站關閉 VM。如果您不再需要 VM,請記得刪除 VM 和相關聯的 .vhd 檔案,以免支付儲存體費用。如需詳細資訊,請參閱虛擬機器定價詳細資料的「常見問題集」一節。

搭配回到頁首連結使用的箭頭圖示 Top

搭配回到頁首連結使用的箭頭圖示 Top

搭配回到頁首連結使用的箭頭圖示 Top

另請參閱

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見
顯示:
© 2014 Microsoft