Share via


建立可用性群組 (SQL Server PowerShell)

此主題描述如何使用 SQL Server 2012 中的 PowerShell,透過 PowerShell 指令程式建立及設定 AlwaysOn 可用性群組。 「可用性群組」(Availability Group) 會定義當做單一單位容錯移轉的一組使用者資料庫,以及支援容錯移轉的一組容錯移轉夥伴 (也稱為「可用性複本」(Availability Replica))。

[!附註]

如需可用性群組的簡介,請參閱<AlwaysOn 可用性群組概觀 (SQL Server)>。

  • 開始之前: 

    必要條件、限制及建議

    安全性

    工作及對應 PowerShell 指令程式的摘要

    若要設定和使用 SQL Server PowerShell 提供者

  • 若要建立及設定可用性群組,請使用: 使用 PowerShell 建立及設定可用性群組

  • 範例:使用 PowerShell 建立可用性群組

  • 相關工作

  • 相關內容

[!附註]

若不使用 PowerShell 指令程式,您可以使用 [建立可用性群組精靈] 或 Transact-SQL。 如需詳細資訊,請參閱<使用新增可用性群組對話方塊 (SQL Server Management Studio)>或<建立可用性群組 (Transact-SQL)>。

開始之前

我們強烈建議您先閱讀本節內容,然後再嘗試建立您的第一個可用性群組。

必要條件、限制及建議

  • 建立可用性群組之前,請確認 SQL Server 主機執行個體分別位於 Windows Server 容錯移轉叢集 (WSFC) 容錯移轉叢集的不同 WSFC 節點上。 此外,請確認您的伺服器執行個體符合其他伺服器執行個體必要條件和所有其他 AlwaysOn 可用性群組 需求,而且您了解建議事項。 如需詳細資訊,我們強烈建議您閱讀<AlwaysOn 可用性群組的必要條件、限制和建議 (SQL Server)>。

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

安全性

權限

需要 sysadmin 固定伺服器角色的成員資格,以及 CREATE AVAILABILITY GROUP 伺服器權限、ALTER ANY AVAILABILITY GROUP 權限或 CONTROL SERVER 權限。

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

工作及對應 PowerShell 指令程式的摘要

下表列出與設定可用性群組有關的基本工作,並指出 PowerShell 指令程式支援哪些工作。 AlwaysOn 可用性群組 工作必須依照其出現在表格中的順序來執行。

工作

PowerShell 指令程式 (如果可用) 或 Transact-SQL 陳述式

在何處執行工作*

建立資料庫鏡像端點 (每個 SQL Server 執行個體一次)

New-SqlHadrEndPoint

在缺少資料庫鏡像端點的每一個伺服器執行個體上執行。

[!附註]

若要變更現有資料庫鏡像端點,請使用 Set-SqlHadrEndpoint。

建立可用性群組

首先,使用 New-SqlAvailabilityReplica 指令程式搭配 -AsTemplate 參數,針對您打算包含在可用性群組內之兩個可用性複本的每一個來建立記憶體內的可用性複本物件。

然後,使用 New-SqlAvailabilityGroup 指令程式及參考可用性複本物件來建立可用性群組。

於裝載初始主要複本的伺服器執行個體上執行。

將次要複本加入可用性群組

Join-SqlAvailabilityGroup

在裝載次要複本的每一個伺服器執行個體上執行。

準備次要資料庫

Backup-SqlDatabase 和Restore-SqlDatabase

在裝載主要複本的伺服器執行個體上建立備份。

使用 NoRecovery 還原參數,還原裝載次要複本之每個伺服器執行個體上的備份。 如果在裝載主要複本的電腦和裝載目標次要複本的電腦之間有檔案路徑差異,也要使用 RelocateFile 還原參數。

將每一個次要資料庫加入可用性群組來啟動資料同步處理。

Add-SqlAvailabilityDatabase

在裝載次要複本的每一個伺服器執行個體上執行。

* 若要執行指定的工作,請將目錄切換到 (cd) 指定的伺服器執行個體。

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

若要設定和使用 SQL Server PowerShell 提供者

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

使用 PowerShell 建立和設定可用性群組

[!附註]

若要檢視給定指令程式的語法和範例,請使用 SQL Server PowerShell 環境中的 Get-Help 指令程式。 如需詳細資訊,請參閱<取得 SQL Server PowerShell 說明>。

  1. 將目錄 (cd) 變更為要裝載主要複本的伺服器執行個體。

  2. 針對主要複本建立記憶體中的可用性複本物件。

  3. 針對每一個次要複本建立記憶體中的可用性複本物件。

  4. 建立可用性群組。

    [!附註]

    可用性群組名稱的最大長度為 128 個字元。

  5. 將新的次要複本加入可用性群組。 如需詳細資訊,請參閱<將次要複本聯結至可用性群組 (SQL Server)>。

  6. 如果是可用性群組中的每個資料庫,請使用 RESTORE WITH NORECOVERY 還原主要資料庫的最近備份來建立次要資料庫。

  7. 將每一個新的次要資料庫加入可用性群組。 如需詳細資訊,請參閱<將次要複本聯結至可用性群組 (SQL Server)>。

  8. 您可以選擇使用 Windows dir 命令來確認新的可用性群組的內容。

[!附註]

如果伺服器執行個體的 SQL Server 服務帳戶在不同的網域使用者帳戶之下執行,請在每一個伺服器執行個體上建立其他伺服器執行個體的登入,並將本機資料庫鏡像端點的 CONNECT 權限授與此登入。

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

範例:使用 PowerShell 建立可用性群組

下列 PowerShell 範例會建立及設定一個名為 MyAG 的簡單可用性群組,其包含兩個可用性複本和一個可用性資料庫。 範例:

  1. 備份 MyDatabase 及其交易記錄。

  2. 使用 -NoRecovery 選項還原 MyDatabase 和其交易記錄。

  3. 建立主要複本的記憶體中表示,此主要複本將由 SQL Server 本機執行個體 (名為 PrimaryComputer\Instance) 所裝載。

  4. 建立次要複本的記憶體中表示,此次要複本將由 SQL Server 執行個體 (名為 SecondaryComputer\Instance) 所裝載。

  5. 建立名為 MyAG 的可用性群組。

  6. 將次要複本聯結至可用性群組。

  7. 將次要資料庫加入可用性群組。

# Backup my database and its log on the primary
Backup-SqlDatabase `
    -Database "MyDatabase" `
    -BackupFile "\\share\backups\MyDatabase.bak" `
    -ServerInstance "PrimaryComputer\Instance"

Backup-SqlDatabase `
    -Database "MyDatabase" `
    -BackupFile "\\share\backups\MyDatabase.log" `
    -ServerInstance "PrimaryComputer\Instance" `
    -BackupAction Log 

# Restore the database and log on the secondary (using NO RECOVERY)
Restore-SqlDatabase `
    -Database "MyDatabase" `
    -BackupFile "\\share\backups\MyDatabase.bak" `
    -ServerInstance "SecondaryComputer\Instance" `
    -NoRecovery

Restore-SqlDatabase `
    -Database "MyDatabase" `
    -BackupFile "\\share\backups\MyDatabase.log" `
    -ServerInstance "SecondaryComputer\Instance" `
    -RestoreAction Log `
    -NoRecovery

# Create an in-memory representation of the primary replica.
$primaryReplica = New-SqlAvailabilityReplica `
    -Name "PrimaryComputer\Instance" `
    -EndpointURL "TCP://PrimaryComputer.domain.com:5022" `
    -AvailabilityMode "SynchronousCommit" `
    -FailoverMode "Automatic" `
    -Version 11 `
    -AsTemplate

# Create an in-memory representation of the secondary replica.
$secondaryReplica = New-SqlAvailabilityReplica `
    -Name "SecondaryComputer\Instance" `
    -EndpointURL "TCP://SecondaryComputer.domain.com:5022" `
    -AvailabilityMode "SynchronousCommit" `
    -FailoverMode "Automatic" `
    -Version 11 `
    -AsTemplate

# Create the availability group
New-SqlAvailabilityGroup `
    -Name "MyAG" `
    -Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `
    -AvailabilityReplica @($primaryReplica,$secondaryReplica) `
    -Database "MyDatabase"

# Join the secondary replica to the availability group.
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "MyAG"

# Join the secondary database to the availability group.
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\MyAG" -Database "MyDatabase"

相關工作

若要設定 AlwaysOn 可用性群組的伺服器執行個體

若要設定可用性群組和複本屬性

若要完成可用性群組組態

建立可用性群組的其他方法

若要疑難排解 AlwaysOn 可用性群組組態

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

相關內容

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

請參閱

概念

資料庫鏡像端點 (SQL Server)

AlwaysOn 可用性群組概觀 (SQL Server)