이 글에서는 SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance, Microsoft Fabric의 SQL 데이터베이스에서 변경 이벤트 스트리밍(CES) 기능의 AMQP 프로토콜 폐지에 대해 설명합니다.
AMQP 프로토콜 지원 중단으로 인해 새 스트림 그룹을 만들 때 destination_type 구성 값에 호환성이 깨지는 변경 사항이 도입됩니다. 출시 일정은 제품마다 다릅니다. 이 글에서는 이러한 변화가 신규 및 기존 스트림 그룹에 미치는 영향, 플랫폼별 차이점, 그리고 기존 스트림 그룹을 AMQP 프로토콜에서 Kafka 프로토콜로 마이그레이션하는 방법을 설명합니다.
AMQP 프로토콜이란 무엇인가요?
AMQP 프로토콜("AMQP")은 CES가 Azure Event Hubs와 Fabric Eventstream에 변경 이벤트를 보낼 때 지원한 두 가지 프로토콜 중 하나였습니다. 이 시스템은 Azure Event Hubs와 Fabric Eventstream에 이벤트를 게시하는 서비스 간 구현이었습니다.
이 획기적인 변경 이전에는, 스트림 그룹 구성 시 다음 지원 값 중 하나를 사용하여 프로토콜 destination_type 을 지정하셨습니다:
-
AzureEventHubsAMQP- AMQP 프로토콜 -
AzureEventHubsApacheKafka- 카프카 프로토콜
이 획기적인 변경 이후, Azure SQL Database와 Microsoft Fabric의 SQL 데이터베이스에서 새로 생성된 스트림 그룹에 대해 지원되는 destination_type 유일한 값은 Kafka 프로토콜을 AzureEventHubs사용하는 것입니다. Azure SQL Managed Instance와 SQL Server 2025는 여전히 AzureEventHubsAMQP 및 AzureEventHubsApacheKafka를 허용합니다.
2026년 8월 15일부터 Azure SQL Database의 AzureEventHubs 스트림 그룹은 로 destination_type를 사용해야 합니다. 이전 값으로 스트림 그룹을 만들려는 시도는 실패합니다.
Azure Event Hubs에 게시된 메시지의 소비자는 메시지를 게시하는 프로토콜과 상관없이 AMQP 또는 Kafka 프로토콜 중 선택할 수 있습니다.
destination_type 값에 대한 플랫폼별 지원
새로운 스트림 그룹을 생성할 때 허용 destination_type 되는 값은 제품과 버전에 따라 다릅니다:
| 제품 | 허용되는 destination_type 값 |
Notes |
|---|---|---|
| Azure SQL 데이터베이스 | AzureEventHubs |
유일하게 지지받는 가치입니다.
AzureEventHubsAMQP 및 AzureEventHubsApacheKafka는 새 스트림 그룹에 허용되지 않습니다. |
| Azure SQL Managed Instance |
AzureEventHubsAMQP, AzureEventHubsApacheKafka |
이 값들은 여전히 인정되지만 폐지됩니다. 새 스트림 그룹에는 AzureEventHubsAMQP을(를) 사용하지 마세요. |
| SQL Server 2025 |
AzureEventHubsAMQP, AzureEventHubsApacheKafka |
이 값들은 여전히 인정되지만 폐지됩니다. 새 스트림 그룹에는 AzureEventHubsAMQP을(를) 사용하지 마세요. |
| Microsoft Fabric의 SQL 데이터베이스 | AzureEventHubs |
유일하게 지지받는 가치입니다. |
새로운 스트림 그룹은 플랫폼이 지원하는 경우에만 사용 AzureEventHubs 하세요. Azure SQL Managed Instance 및 SQL Server 2025의 경우 AzureEventHubsApacheKafka(Kafka 프로토콜)을 사용하세요. 새 스트림 그룹에는 AzureEventHubsAMQP을(를) 사용하지 마세요.
AMQP 구성 스트림 그룹을 Kafka로 마이그레이션하는 방법
기존 CES 그룹은 AzureEventHubsAMQP 2027년 4월까지 AMQP 프로토콜을 사용하여 메시지를 계속 발행합니다.
AzureEventHubs를 destination_type로 사용하여 SQL Server 2025, Azure SQL Database, Azure SQL Managed Instance 또는 Microsoft Fabric의 SQL 데이터베이스에서 기존 AMQP로 구성된 스트림 그룹을 가능한 한 빨리 다시 만드세요.
다음 쿼리를 사용하여 모든 구성된 스트림 그룹을 식별하세요:
exec sp_help_change_event_stream_groups
streaming_dest_type 열에 있는 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 또는 서비스 키 인증을 지원합니다. 현재 CES에서는 SAS 인증이 불가능합니다.
각 테이블을 이전 스트림 그룹에서 하나씩 제거하려면 다음 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_groupsstreaming_dest_type로 표시AzureEventHubs되는지 확인하세요.
이 과정을 환경 내 모든 AMQP 구성 스트림 그룹에 대해 반복하세요.
테이블을 새로운 스트림 그룹으로 이동하기 (Kafka)
CES는 변경 사항을 로그 파일에서 생성되는 즉시 스캔하고 게시하지만, 지연 시간 때문에 이벤트가 지연될 수 있습니다. 스트림 그룹에서 테이블을 제거하면 로그 파일의 대기 중인 변경 사항이 공개되지 않습니다. 따라서 스트림 그룹 간 테이블 이동을 신중하게 조율하여 이벤트를 놓치지 않도록 하세요.
스트림 그룹에서 테이블을 제거하기 전에 sys.dm_change_feed_log_scan_sessions DMV를 확인해 테이블에 게시할 예정인 변경 사항이 없는지 확인하세요. 변경 사항이 보류 중이라면, 프로세스가 이를 게시할 때까지 기다렸다가 이전 스트림 그룹에서 테이블을 제거하고 새 스트림 그룹에 추가하세요.
놓친 이벤트의 위험을 줄이기 위해 다음 방법 중 하나를 사용하세요:
- 테이블에 쓰기가 없을 때는 전용 유지보수 창 동안 테이블을 스트림 그룹 간에 이동하세요.
- 활동이 적은 기간 동안 스트리밍되는 테이블에 독점적 잠금을 걸어 해당 테이블에 대한 새로운 쓰기를 막으세요. 테이블이 새 스트림 그룹에 들어간 후에만 독점 잠금을 해제하세요.
폐기 일정
AMQP 프로토콜의 폐지는 다음 두 가지 일정을 따릅니다:
| 스트림 그룹 유형 | 적용 날짜 | 영향 |
|---|---|---|
| Azure SQL Database 및 Microsoft Fabric의 SQL 데이터베이스에 새로운 스트림 그룹 | 2026년 8월 15일 | 새로 생성된 스트림 그룹은 destination_type로 AzureEventHubs을 지정해야 합니다. 두 가지 시도 모두 AzureEventHubsAMQPAzureEventHubsApacheKafka 실패합니다. |
| Azure SQL Managed Instance 및 SQL Server 2025의 새로운 스트림 그룹 | 향후 업데이트 (추후 예정) |
AzureEventHubsAMQP 그리고 AzureEventHubsApacheKafka 여전히 받아들여지지만 폐지되었습니다. 향후 업데이트에서 필요한 값으로 추가됩니다 AzureEventHubs . |
| AMQP 프로토콜을 사용하는 기존 스트림 그룹 | 2027년 4월 | 이미 설정된 AzureEventHubsAMQP 스트림 그룹은 이 날짜까지 정상적으로 계속 작동합니다. AMQP 프로토콜 지원이 제거되기 전에 반드시 Kafka 프로토콜을 사용하도록 마이그레이션해야 합니다. |
게시된 메시지의 소비자는 별도의 변경을 할 필요가 없습니다.
퇴폐 영향
이 섹션에서는 AMQP 프로토콜 폐지가 미치는 영향을 설명합니다. 예를 들면:
게시된 메시지 소비자에 미치는 영향
목적지에 쓰는 프로토콜(Azure Event Hubs 또는 Fabric Eventstream)은 메시지 소비자가 사용하는 프로토콜과는 별개입니다. 따라서 메시지 게시를 위해 AMQP 프로토콜에서 Kafka 프로토콜로 전환해도 메시지 소비자에게는 영향을 미치지 않습니다. 이들은 두 프로토콜 중 어느 쪽이든 메시지를 계속 소비할 수 있습니다.
기존 AMQP 스트림 그룹에 미치는 영향
기존 스트림 그룹은 AzureEventHubsAMQP기존과 동일하게 계속 작동하며 AMQP 프로토콜을 사용합니다. 이 그룹들에 대해 즉각적인 중단이나 설정 변경이 필요하지 않습니다. 하지만 AMQP 프로토콜 지원이 2027년 4월에 종료되기 전에 AMQP 구성 스트림 그룹을 Kafka 프로토콜로 마이그레이션해야 합니다.
새로 생성된 스트림 그룹에 미치는 영향
2026년 8월 15일부터 Azure SQL Database와 Microsoft Fabric에서 새로 생성된 스트림 그룹에 허용 destination_type 되는 유일한 값은 AzureEventHubs. 이전 값 AzureEventHubsAMQP 이나 AzureEventHubsApacheKafka를 사용하여 스트림 그룹을 생성하려 하면 다음과 같은 오류 메시지가 발생하여 실패합니다:
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 Event Hubs 또는 Fabric Eventstream에 연결됩니다. 기존 AMQP 스트림 그룹이 SAS 인증을 사용한다면, 새 스트림 그룹을 생성할 때 Microsoft Entra 또는 서비스 키 인증으로 전환해야 합니다. 스트림 그룹에 대한 인증을 구성하는 방법에 대한 자세한 내용은 변경 이벤트 스트리밍 구성을 참조하세요.
퍼블리셔 네트워크 구성에 미치는 영향
출판 측 네트워크 설정 방식에 따라, AMQP가 사용하는 5671과 5672 포트 대신 Kafka의 포트 9093을 사용하도록 허용된 아웃바운드 포트를 재구성할 필요가 있을 수 있습니다. 퍼블리셔는 포트 9093에서 아웃바운드 트래픽을 허용해야 합니다.
AMQP 프로토콜을 사용하는 기존 스트림 그룹이 있을 때만 5671 과 5672 포트를 열어두세요. 이 포트들은 Kafka 프로토콜을 사용하는 새로 생성된 스트림 그룹에는 필요하지 않습니다.
자세한 내용은 Azure Event Hubs 프로토콜별 방화벽 구성을 참조하세요.