本文說明 SQL Server 2025、Azure SQL Database、Azure SQL 受控執行個體 及 Microsoft Fabric 中 SQL 資料庫中變更事件串流(CES)功能的 AMQP 協議被棄用的情況。
AMQP 協定的棄用會在建立新串流群組時,對設定值產生破壞性的變更 destination_type 。 推出時程依產品而異。 本文說明這些變更如何影響新舊串流群組、平台特有差異,以及如何將現有串流群組從 AMQP 協定遷移到 Kafka 協定。
什麼是AMQP協議?
AMQP 協定(「AMQP」)是 CES 在向 Azure 事件中樞 和 Fabric Eventstream 傳送變更事件時所支援的兩種協定之一。 這是一個服務對服務的實作,將事件發佈到 Azure 事件中樞 和 Fabric Eventstream。
在此重大變更之前,當destination_type串流群組時,您會在 設定值中使用下列其中一個支援的值來指定通訊協定:
-
AzureEventHubsAMQP- AMQP 協定 -
AzureEventHubsApacheKafka- 卡夫卡協定
在此重大變更後,對於 Azure SQL Database 和 Microsoft Fabric 中的 SQL 資料庫內新建立的串流群組,唯一受支援的 destination_type 值為 AzureEventHubs,其使用 Kafka 通訊協定。 Azure SQL 受控執行個體 和 SQL Server 2025 仍然接受 AzureEventHubsAMQP 和 AzureEventHubsApacheKafka。
自 2026 年 8 月 15 日起,Azure SQL Database 中 新建立的串流群組必須使用 AzureEventHubs 作為 destination_type。 嘗試使用先前的值建立串流群組失敗。
發佈至 Azure 事件中樞 的訊息消費者可選擇 AMQP 或 Kafka 協定,無論發布訊息的協定為何。
平台對於 destination_type 值的支援
建立新串流群組時允許 destination_type 的值取決於產品與版本:
| 產品 | 允許的 destination_type 值 |
Notes |
|---|---|---|
| Azure SQL Database | AzureEventHubs |
唯一被支持的價值。 新的串流群組不接受 AzureEventHubsAMQP 和 AzureEventHubsApacheKafka。 |
| Azure SQL 受控執行個體 |
AzureEventHubsAMQP、AzureEventHubsApacheKafka |
這些數值仍被接受,但會被棄用。 新增串流群組時,避免使用 AzureEventHubsAMQP。 |
| SQL Server 2025 |
AzureEventHubsAMQP、AzureEventHubsApacheKafka |
這些數值仍被接受,但會被棄用。 新增串流群組時,避免使用 AzureEventHubsAMQP。 |
| Microsoft Fabric 中的 SQL 資料庫 | AzureEventHubs |
唯一被支持的價值。 |
對於新的串流群組,請在平台支援時使用 AzureEventHubs 。 若為 Azure SQL 受控執行個體 和 SQL Server 2025,請使用 AzureEventHubsApacheKafka(Kafka 通訊協定)。 新增串流群組時,避免使用 AzureEventHubsAMQP。
如何將 AMQP 設定的串流群組遷移到 Kafka
已設定為 CES AzureEventHubsAMQP 的群組持續使用 AMQP 協定發佈訊息,直到 2027 年 4 月。 請盡快在 SQL Server 2025、Azure SQL Database、Azure SQL 受控執行個體 或 Microsoft Fabric 中的 SQL 資料庫內,使用 AzureEventHubs 作為 destination_type,重新建立您現有的以 AMQP 設定的資料流群組。
請使用以下查詢來識別所有已設定的串流群組:
exec sp_help_change_event_stream_groups
儲存 AzureEventHubsAMQP 欄位中具有 的串流群組設定值。 建立新串流群組時需要這些值。
請使用以下查詢來識別每個串流群組中需要遷移的資料表:
exec sys.sp_help_change_event_stream_tables
要將 AMQP 設定的串流群組遷移到 Kafka,請遵循以下步驟:
使用 sys.sp_create_event_stream_group 儲存程序建立替換串流。 指定
AzureEventHubs為destination_type參數。參數
destination_location預期埠 號為 9093,例如以下範例:myEventHubsNamespace.servicebus.windows.net:9093/myEventHubsInstance。Kafka 協定支援 Microsoft Entra 或服務金鑰認證。 SAS 認證現已無法用於 CES。
使用 sys.sp_remove_object_from_event_stream_group,從舊串流群組中逐一移除每一個資料表:
exec sys.sp_remove_object_from_event_stream_group @stream_group_name = '<old_stream_group_name>', @object_name = '<schema.table_name>'使用 sys.sp_add_object_to_event_stream_group,將您從舊串流群組移除的每個資料表加入新的取代串流群組:
exec sys.sp_add_object_to_event_stream_group @stream_group_name = '<new_stream_group_name>', @object_name = '<schema.table_name>'一旦你將所有資料表加入新串流群組,使用 sys.sp_drop_event_stream_group 移除舊的串流群組。 詳情請參閱 CES 的設定。
exec sys.sp_drop_event_stream_group @stream_group_name = '<old_stream_group_name>'透過執行
sp_help_change_event_stream_groups並確認其將AzureEventHubs顯示為 streaming_dest_type,以驗證新的串流群組是否處於作用中。
對環境中每個 AMQP 設定的串流群組重複這個流程。
將資料表移至新的串流群組(Kafka)
CES 會在變更建立的當下,立即從日誌檔案中掃描並發布這些變更,但發布延遲可能會導致事件延後。 當你從串流群組移除資料表時,日誌檔中待處理的變更不會被發布。 因此,請審慎協調在串流群組之間移動資料表的作業,以避免遺漏事件。
在將資料表從資料流群組中移除之前,請先檢查 sys.dm_change_feed_log_scan_sessions DMV,以確保這些資料表上沒有等待發佈的變更。 如果有待處理的變更,請等程序發布後,再從舊串流群組移除該表格並加入新的串流群組。
為降低錯過事件的風險,請採用以下方法之一:
- 在沒有對資料表進行寫入作業時,請於專屬維護時段內在串流群組之間移動資料表。
- 在活動低的時候,對正在串流的資料表設置專屬鎖,以防止對這些資料表有新的寫入。 只有在表格進入新串流群組後才解除專屬鎖。
淘汰時間軸
AMQP 協定的棄用遵循以下兩個時間軸:
| 溪流群組類型 | 生效日期 | 影響 |
|---|---|---|
| Azure SQL Database 與 Microsoft Fabric 中的 SQL 資料庫新增串流群組 | 2026年8月15日 | 新建立的串流群組必須指定 AzureEventHubs 為 destination_type。 嘗試使用 AzureEventHubsAMQP 或 AzureEventHubsApacheKafka 都會失敗。 |
| Azure SQL 受控執行個體 與 SQL Server 2025 的新串流群組 | 未來更新(待定) |
AzureEventHubsAMQP 和 AzureEventHubsApacheKafka 仍可接受,但已遭棄用。 未來的更新會將 AzureEventHubs 新增為必要值。 |
| 現有使用 AMQP 協定的串流群組 | 2027 年 4 月 | 已設定的 AzureEventHubsAMQP 串流群組在此日期前仍正常運作。 必須先遷移至使用 Kafka 協定,才能移除對 AMQP 協定的支援。 |
已發佈訊息的消費者不需要做任何更改。
棄用影響
本節說明 AMQP 協定棄用的影響,例如:
對已發佈訊息消費者的影響
用於寫入目的地(無論是 Azure 事件中樞 或 Fabric Eventstream)的協定,與訊息使用者所使用的協定是獨立的。 因此,從 AMQP 協定切換到 Kafka 協定發佈訊息,對訊息消費者沒有影響。 他們可以繼續使用任一協定接收訊息。
對現有 AMQP 串流群組的影響
現有的串流群組若已設定為 AzureEventHubsAMQP,仍可透過 AMQP 通訊協定照常運作。 這些群組目前不需要立即進行中斷措施或變更設定。 不過,您必須在 2027 年 4 月移除 AMQP 協定支援前,遷移 AMQP 設定的串流群組以使用 Kafka 協定。
對新建立的溪流群組的影響
自 2026 年 8 月 15 日起,Azure SQL Database 及 Microsoft Fabric 中新建立串流群組唯一允許destination_type的值為 AzureEventHubs。 嘗試使用先前的值 AzureEventHubsAMQPAzureEventHubsApacheKafka或 建立串流群組時,會因以下錯誤訊息而失敗:
Msg 23626, Level 16, State 2, Line 481, An error occurred. The error/state returned was 23618/5: 'The value provided for the argument '@destination_type' is invalid. Allowed values: AzureEventHubs.'
在此日期之前,更新任何建立串流群組的自動化腳本。
destination_type參數必須用 AzureEventHubs 代替 AzureEventHubsAMQP 或 AzureEventHubsApacheKafka。
Kafka 協定使用 Microsoft Entra 或服務金鑰認證來連接 Azure 事件中樞 或 Fabric Eventstream。 如果你現有的 AMQP 串流群組使用 SAS 認證,建立新串流群組時需要切換到 Microsoft Entra 或服務金鑰認證。 請參閱 「設定變更事件串流 」以了解如何為串流群組設定認證的詳細資訊。
對出版商網路配置的影響
根據你在出版端如何配置網路,可能需要重新設定允許的外站埠口,改用 Kafka 的 9093 埠,而不是 AMQP 使用的 5671 和 5672 埠。 發佈者必須允許 9093 埠的外發流量。
只有在你已有仍在使用 AMQP 協定的串流群組時,才應該保留 5671 和 5672 埠。 這些埠對於使用Kafka協定的新串流群組來說並非必需。
欲了解更多資訊,請參閱 Azure 事件中樞 firewall configuration per protocol。