如何在 SQL Server RDS 多可用區域執行個體中的主要與次要主機之間同步 SQL Server Agent 作業?

2 分的閱讀內容
0

我有一個用於 Microsoft SQL Server 多可用區域執行個體的 Amazon 關聯式資料庫 (Amazon RDS)。我想在執行個體中的主要與次要主機之間同步 SQL Server Agent 作業。

簡短說明

Amazon RDS for SQL Server 對幕後的多可用區域設定使用始終開啟/鏡像。SQL Server Agent 將作業儲存在 msdb 系統資料庫中。此系統資料庫不會作為多可用區域部署的一部分進行複製。因此,SQL Server Agent 作業不會自動同步。您必須於容錯移轉後在新的主要執行個體上重新建立作業。但這些作業會存在於您最初建立它們的舊主要執行個體上。如果將執行個體故障恢復至之前的主要執行個體 (您在其中建立作業) 上,您仍會看到該作業。若要在多可用區域中建立作業,請先在主要 (作用中) 執行個體中建立該作業。然後,在 RDS 執行個體上執行故障移轉,並在新的主要執行個體上建立相同的作業。

為避免在新的主要執行個體上手動建立作業,請開啟 SQL Agent 作業複寫。在多可用區域環境中開啟作業複寫時,SQL Server Agent 會自動將作業從主要主機複製到次要主機。您無需在新的主要複本上手動建立作業,因為它們會透過代理程式複寫功能進行同步。這些作業在兩個複本中都可以使用。

如需詳細資訊,請參閱 Amazon RDS for Microsoft SQL Server 的多可用區域部署

**注意:**下列解決方法不適用於 Amazon RDS Custom for SQL Server。

解決方法

開啟 SQL 代理程式複寫功能

若要開啟 SQL Server Agent 作業複寫,請在主要執行個體上使用管理員帳戶執行下列程序:

**重要事項:**請確定在所有代理程式作業可用的執行個體上執行此程序。如果沒有可用代理程式作業的執行個體成為主要執行個體,且您開啟此功能,則會刪除次要執行個體上的作業。此外,作為此功能的一部分,將會複製所有現有和新建的作業。

EXECUTE msdb.dbo.rds_set_system_database_sync_objects
@object_types = 'SQLAgentJob';

驗證 SQL 代理程式複寫功能已開啟

確認已開啟複製功能:

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

如果複寫功能已開啟,此查詢會對 object_class 傳回 SQLagentjob。如果查詢未返回任何內容,則表示該功能未開啟。

確認修改後的作業和新作業最後一次與次要執行個體同步的時間

檢查複寫的 last_sync_time

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

在查詢結果中,如果同步時間超過了作業更新或建立的時間,則該作業會與次要執行個體同步。

**注意:**如果您不知道作業建立或更新的時間,請先執行下列查詢以擷取時間標記:

select name as 'JobName'
,JobStatus = CASE
    When enabled =1 Then 'Active'
    Else 'Inactive'
    END
,date_created As 'JobCreatedOn' ,date_modified as 'LastModified'
from msdb..sysjobs

**注意:**作業在複本之間同步需要幾分鐘。

若要執行資料庫容錯移轉以確認作業複寫,請先等待 last_sync_time 更新。然後,繼續執行多可用區域容錯移轉。

代理程式作業複寫支援和不支援的作業類別

下列類別的作業複寫:

  • [Uncategorized (Local)]
  • [Uncategorized (Multi-Server)]
  • [Uncategorized]
  • Data Collector
  • Database Engine Tuning Advisor
  • Database Maintenance
  • Full-Text

**注意:**只有步驟類型為 T-SQL 的作業才會複寫。

下列類別不支援複寫:

  • 步驟類型為 SQL Server Integration Services (SSIS)、SQL Server Reporting Services (SSRS)、replication 或 PowerShell 等的作業。
  • 使用資料庫郵件和伺服器層級物件的作業。

關閉 SQL Server Agent 作業複寫

若要關閉 SQL Server Agent 作業複寫,請執行下列命令:

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = '';

關閉複寫後,對現有作業和新建作業的修改將不再與其他複本同步。

AWS 官方
AWS 官方已更新 1 年前