Konfigurace streamování událostí změn (Preview) do Azure Event Hubs

Platí pro: SQL Server 2025 (17.x) Azure SQL DatabaseSpravovaná instance Azure SQLSQL databáze v Microsoft Fabric

Tento článek popisuje, jak nastavit funkci change event streaming (CES) v SQL Server 2025 (17.x), Azure SQL Database, Azure SQL Managed Instance a SQL databázi v Microsoft Fabric pro streamování Azure Event Hubs.

Informace o konfiguraci CES pro Fabric Eventstream naleznete v části Stream to Fabric Eventstream.

Poznámka:

Streamování změnových událostí je momentálně ve verzi Preview a podpora se u jednotlivých produktů liší. Ve verzi Preview se tato funkce může změnit.

Postup pro streamování změnových událostí

  1. Použijte existující nebo vytvořte nový obor názvů služby Azure Event Hubs a instanci služby Event Hubs. Instance Event Hubs přijímá události.
  2. Povolte streamování událostí změn pro uživatelskou databázi.
  3. Vytvořte skupinu streamů. Pomocí této skupiny nakonfigurujte cíl, přihlašovací údaje, omezení velikosti zpráv a schéma dělení.
  4. Přidejte jednu nebo více tabulek do skupiny streamů.

Každý krok je podrobně popsaný v následujících částech tohoto článku.

Požadavky

Důležité

Od 15. srpna 2026 je protokol AMQP pro change event streaming (CES) již zastaralý. Existují rozdíly mezi platformami. Informace o postupu migrace a časovém harmonogramu najdete v článku zastarání protokolu AMQP.

Ke konfiguraci streamování událostí změn potřebujete následující prostředky, oprávnění a konfiguraci:

Při použití streamování událostí změn se službou Azure SQL Managed Instance musí být instance nakonfigurovaná se zásadami aktualizace SQL Serveru 2025 nebo Alwaysup-todate.

Konfigurace služby Azure Event Hubs

Informace o vytváření služby Azure Event Hubs najdete v tématu Vytvoření centra událostí pomocí webu Azure Portal.

Řízení přístupu ke službě Azure Event Hubs

Nakonfigurujte řízení přístupu pro prostředek SQL ve spojení se službou Azure Event Hubs. Microsoft Entra ověřování je nejbezpečnější metoda. CES podporuje autentizaci Microsoft Entra v Azure SQL Database a Azure SQL Managed Instance. Pro SQL Server 2025 je ověřování Microsoft Entra podporováno počínaje kumulativní aktualizací 3 (CU3) pro instance s podporou Azure Arc nebo běžící na Azure VM. Zásady sdíleného přístupu jsou sice podporované, ale používejte je jenom v případě, že není možnost ověřování Microsoft Entra.

Zásady sdíleného přístupu poskytují ověřování a autorizaci pro službu Azure Event Hubs. Každá zásada sdíleného přístupu potřebuje název, úroveň přístupu (Manage, Send nebo Listen) a vazbu prostředků (obor názvů Event Hubs nebo konkrétní instanci Event Hub). Zásady na úrovni instancí nabízejí větší zabezpečení s využitím principu nejnižších oprávnění. Ačkoliv produkty SQL Database Engine podporují politiky sdíleného přístupu, používejte Microsoft Entra autentizaci kdykoli je to možné, protože poskytuje lepší bezpečnost.

Pokud používáte politiku sdíleného přístupu pro autentizaci a autorizaci, klienti posílající data do instance Event Hubu musí uvést název politiky, kterou chtějí použít, spolu s klíčem služby této politiky.

Pro konfiguraci streamování do Azure Event Hubs vytvořte nebo znovu použijte politiku sdíleného přístupu s oprávněním Odeslat. Můžete se ověřit pomocí klíče služby (hodnoty primárního nebo sekundárního klíče).

Poznámka:

Pro lepší zabezpečení používejte řízení přístupu na základě Microsoft Entra, kdykoli je to možné. Pokud není možné řízení přístupu založené na Microsoft Entra a používáte zásady sdíleného přístupu, nejlepší praxí je pravidelně měnit servisní klíč. Ukládejte všechny tajné kódy bezpečně pomocí služby Azure Key Vault nebo podobné služby.

Definování zásady

Potřebujete politiku sdíleného přístupu s právy Odeslat. Máte tyto možnosti:

  • Vytvoření nové zásady

    Nebo

  • Použití existujících zásad

Poznámka:

Zásady musí mít práva odeslat .

Jakmile je zásada stanovena, poznamenejte si hodnotu klíče služby. Používáte ho spolu s názvem politiky při vytváření přihlašovacích údajů v SQL před konfigurací CES.

Povolit a nakonfigurovat streamování změnových událostí

Důležité

Od 15. srpna 2026 je protokol AMQP pro change event streaming (CES) již zastaralý. Existují rozdíly mezi platformami. Informace o postupu migrace a časovém harmonogramu najdete v článku zastarání protokolu AMQP.

Pokud chcete povolit a nakonfigurovat streamování událostí změn, změňte kontext databáze na uživatelskou databázi a pak postupujte takto:

  1. Pokud ještě není nakonfigurovaná, nastavte databázi na úplný model obnovení.
  2. Vytvořte hlavní klíč a pověření v rámci databáze.
  3. Povolte streamování událostí.
  4. Vytvořte skupinu streamů.
  5. Přidejte jednu nebo více tabulek do skupiny streamů.

Následující příklady ukazují, jak povolit CES podle platformy:

Následující tabulka uvádí ukázkové hodnoty parametrů pro příklady v této sekci:

Parameter Ukázková hodnota Notes
@stream_group_name N'myStreamGroup' Název skupiny událostí streamu.
@destination_location Viz poznámky FQDN jmenného prostoru Azure Event Hubs a název instance, včetně portu 9093. Formát: <namespace>.servicebus.windows.net:9093/<instance>. Pro službu Fabric Eventstream použijte vlastní vstupní koncový bod.
@partition_key_scheme N'None' (Výchozí) Dělení se vybírá systémem round robin. Další možnosti jsou StreamGroup, Table, a Column.
@max_message_size_kb 256 Výchozí maximální velikost zprávy je 256 KB. Tuto hodnotu sladit s limity vaší destinace.

Příklady také používají následující hodnoty:

  • [volitelné, pokud jsou použity politiky sdíleného přístupu přes servisní klíč] Primární nebo sekundární klíčová hodnota převzata z politiky sdíleného přístupu: Secret = 'BVFnT3baC/K6I8xNZzio4AeoFt6nHeK0i+ZErNGsxiw='
  • EXEC sys.sp_add_object_to_event_stream_group N'myStreamGroup', N'dbo.myTable'

Příklad: Streamování do Azure Event Hubs z databáze Azure SQL Database

Následující příklady ukazují, jak streamovat události změny do Azure Event Hubs z Azure SQL Database pomocí AzureEventHubs jako destination_type. Tato hodnota je jedinou akceptovanou hodnotou pro Azure SQL Database a SQL databáze v Microsoft Fabric.

Příklad v této sekci využívá autentizaci Microsoft Entra. Tato metoda je nejbezpečnější.

Nahraďte hodnoty v lomených závorkách<value> hodnotami pro vaše prostředí.

USE <database name>;

-- Create the Master Key with a password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Password>';

CREATE DATABASE SCOPED CREDENTIAL <CredentialName>
    WITH IDENTITY = 'Managed Identity'

EXEC sys.sp_enable_event_stream

EXEC sys.sp_create_event_stream_group
    @stream_group_name =      N'<EventStreamGroupName>',
    @destination_type =       N'AzureEventHubs',
    @destination_location =   N'<AzureEventHubsHostName>:9093/<EventHubsInstance>',
    @destination_credential = <CredentialName>,
    @max_message_size_kb =    <MaxMessageSize>,
    @partition_key_scheme =   N'<PartitionKeyScheme>'

EXEC sys.sp_add_object_to_event_stream_group
    N'<EventStreamGroupName>',
    N'<SchemaName>.<TableName>'

Příklad: Streamování do Azure Event Hubs z prostředí Azure SQL MI nebo SQL Server 2025

Následující příklady ukazují, jak streamovat události změn do služby Azure Event Hubs ze služby Azure SQL Managed Instance nebo SQL Serveru 2025 pomocí AzureEventHubsApacheKafka jako destination_type.

Důležité

Od 15. srpna 2026 je protokol AMQP pro change event streaming (CES) již zastaralý. Existují rozdíly mezi platformami. Informace o postupu migrace a časovém harmonogramu najdete v článku zastarání protokolu AMQP.

Příklad v této části používá autentizaci Microsoft Entra pro autentizaci do instance služby Azure Event Hubs prostřednictvím protokolu Apache Kafka. Tato metoda je nejbezpečnější.

Nahraďte hodnoty v lomených závorkách<value> hodnotami pro vaše prostředí.

USE <database name>

-- Create the Master Key with a password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Password>'

CREATE DATABASE SCOPED CREDENTIAL <CredentialName>
    WITH IDENTITY = 'Managed Identity'

EXEC sys.sp_enable_event_stream

EXEC sys.sp_create_event_stream_group
    @stream_group_name =      N'<EventStreamGroupName>',
    @destination_type =       N'AzureEventHubsApacheKafka',
    @destination_location =   N'<AzureEventHubsHostName>:<port>/<EventHubsInstance>', -- myEventHubsNamespace.servicebus.windows.net:9093/myEventHubsInstance
    @destination_credential = <CredentialName>,
    @max_message_size_kb =    <MaxMessageSize>,
    @partition_key_scheme =   N'<PartitionKeyScheme>'

EXEC sys.sp_add_object_to_event_stream_group
    N'<EventStreamGroupName>',
    N'<SchemaName>.<TableName>'

Pro potvrzení, že je streamování povoleno, a pro zobrazení tabulek nakonfigurovaných pro skupinu streamů, viz Zobrazit konfiguraci a funkci CES.

Velikost zprávy a zkrácení sloupců

Azure Event Hubs a Fabric Eventstream omezují maximální velikost každé zprávy, kterou obdrží. CES používá @max_message_size_kb toto nastavení k rozdělení velké odchozí události na více částí zpráv, které odpovídají konfigurovanému cílovému cíli. Nastavte tuto hodnotu tak, aby odpovídala limitům vaší destinace. Pro atributy JSON, které identifikují bloky zpráv, viz formát zpráv JSON – změna streamování událostí.

Pokud je jedna nebo více hodnot streamovaných sloupců větší než 1 MB, CES zkrátí každou ovlivněnou hodnotu sloupce na 1 MB dříve, než vytvoří odchozí událost. Limit 1 MB se vztahuje na každou hodnotu sloupce zvlášť. Toto zkrácení je nezávislé na rozdělování zpráv. Po zkrácení nadměrně velkých hodnot sloupců CES vytvoří odchozí událost, podle potřeby ji rozdělí na části v souladu s @max_message_size_kb a každou část odešle do cíle.

Nastavte konfigurační volbu serveru max text repl size tak, aby bylo možné při povolené funkci CES zapisovat do sloupců LOB více než 65 536 bajtů.

Například pokud má řádek pět sloupců a první tři sloupce jsou každá větší než 1 MB, CES:

  1. Zkrátí hodnotu prvního sloupce na 1 MB.
  2. Zkrácuje hodnotu druhého sloupce na 1 MB.
  3. Zkrácuje hodnotu třetího sloupce na 1 MB.
  4. Připraví odchozí událost, rozdělí ji na požadovaný počet částí podle @max_message_size_kb, a každou část odešle do cíle.

Poznámka:

Ořezávání sloupcových dat je bezpodmínečné. CES zkracuje každou hodnotu streamovaného sloupce větší než 1 MB a při tomto zkrácení nehlásí chyby ani varování.

Zobrazit konfiguraci a funkce CES

V sys.databases označuje, is_event_stream_enabled = 1 že pro databázi je povolené streamování událostí změn.

Následující dotaz vrátí všechny databáze s povoleným streamováním událostí změn:

SELECT *
FROM sys.databases
WHERE is_event_stream_enabled = 1;

V sys.tables označuje, is_replicated = 1 že se tabulka streamuje, a sp_help_change_feed_table poskytuje informace o skupině tabulek a metadatech tabulek pro streamování událostí změn.

Následující dotaz vrátí všechny tabulky s povoleným streamováním událostí změn a poskytuje informace o metadatech:

SELECT name,
       is_replicated
FROM sys.tables;

EXECUTE sp_help_change_feed_table
    @source_schema = '<schema name>',
    @source_name = '<table name>';

Uložené procedury CES, systémové funkce a dynamická zobrazení správy

Následující tabulka obsahuje seznam uložených procedur, systémových funkcí a zobrazení dynamické správy, které můžete použít ke konfiguraci, zakázání a monitorování streamování událostí změn:

Systémový objekt Popis
Konfigurace CES
sys.sp_enable_event_stream Povolí CES pro aktuální uživatelskou databázi.
sys.sp_create_event_stream_group Vytvoří skupinu datových proudů, což je konfigurace streamování pro skupinu tabulek. Skupina streamů také definuje cíl a související podrobnosti (například ověřování, velikost zprávy nebo dělení). Stream_group_id se po dokončení postupu automaticky vygeneruje a zobrazí koncovému uživateli.
sys.sp_add_object_to_event_stream_group Přidá tabulku do skupiny streamů.
Zakázání CES
sys.sp_remove_object_from_event_stream_group Odebere tabulku ze skupiny streamů.
sys.sp_drop_event_stream_group Zahodí skupinu streamů. Skupina streamů se nesmí používat.
sys.sp_disable_event_stream Zakáže CES pro současnou uživatelskou databázi.
Monitor CES
sys.dm_change_feed_errors Vrátí chyby doručení.
sys.dm_change_feed_log_scan_sessions Vrátí informace o činnosti skenování logů.
sys.sp_help_change_feed_settings Poskytuje stav a informace o nakonfigurovaném streamování změnových událostí.
sys.sp_help_change_feed Monitoruje aktuální konfiguraci streamu změn.
sys.sp_help_change_feed_table_groups Vrátí metadata, která se používají ke konfiguraci skupin streamování událostí změn.
sys.sp_help_change_feed_table Poskytuje stav a informace o streamovací skupině a metadatech tabulky pro streamování událostí změn.

Růst transakčního protokolu

Vzhledem k tomu, že je zaručeno doručování zpráv, může se protokol transakcí pro databázi s povoleným CES i nadále rozšiřovat. Zkrácení protokolu je zabráněno, pokud se změny CES streamují z protokolu. Jakmile velikost transakčního protokolu dosáhne maximálního definovaného limitu, zápisy do databáze selžou.

Aby se zabránilo tomu ve službě Azure SQL Database a spravované instanci Azure SQL, může Microsoft v případě, že velikost transakčního protokolu přistupuje k maximálnímu definovanému limitu, zakázat CES nebo ukončovat dlouhotrvající transakce. U nespravovaných instancí SQL Serveru, jako jsou místní nebo SQL Server na virtuálních počítačích Azure, zodpovídáte za monitorování velikosti transakčního protokolu a zajištění, že nedosahuje maximálního definovaného limitu, a v případě potřeby ručně zakazujete CES nebo zabíjíte dlouhotrvající transakce.

Jakmile je CES zakázaný nebo je zrušena dlouhotrvající transakce, transakční protokol se zkrátí, aby se uvolnilo místo. Po deaktivaci je nutné CES opět ručně povolit, nebo opakovat veškeré dlouhotrvající transakce, které byly ukončeny. Změny dat provedené v době, kdy byl CES zakázán, se nezachytí. Streamují se pouze změny provedené po restartování CES.

Následuje seznam typických scénářů, které mohou vést k růstu transakčního logu, jestliže je CES povolen.

  • Trvalé chyby. Ces opakuje pokusy o odeslání zprávy, která je opakovaně odmítnuta a CES nemůže pokračovat. Mezi důvody trvalých chyb, které můžou vést k odmítnutí zpráv, patří:
    • Problémy se sítí nebo chybná konfigurace
    • Chybná konfigurace přihlašovacích údajů
    • Chybně nakonfigurovaná maximální velikost zprávy, kterou cíl odmítne.
  • Cíl omezuje příchozí události. Například Azure Event Hubs omezuje rychlost na základě svého SKU.
  • Dlouhotrvající transakce, které generují velké množství záznamů protokolu a brání zkrácení protokolu.

Pro zajištění plynulého provozu pravidelně sledujte velikost transakčního protokolu a chyby doručení CES.

výkon

Na SQL Serveru, službě Azure SQL Managed Instance a elastických fondech Azure SQL Database můžete povolit CES na více databázích. Každá databáze s podporou CES využívá serverové prostředky a konkuruje s jinými úlohami serveru. Ujistěte se, že je váš server odpovídajícím způsobem zajištěný pro očekávanou úlohu, a pravidelně monitorujte výkon serveru a databází.

Omezení

Streamování událostí změn (CES) má následující omezení:

Omezení specifická pro platformu

Na SQL produktech nakonfigurovaných s časovým pásmem mimo UTC pole committime ve streamovací zprávě o změně události nesprávně obsahuje příponu Z , i když toto pole ukazuje místní čas publikující databáze. Když databáze používá UTC, hodnota a přípona se shodují. Tento problém je známý a oprava je připravena v budoucím vydání této funkce.

Následující omezení platí pro konkrétní platformy CES:

CES v SQL Server 2025 má následující omezení:

Omezení na úrovni serveru a obecná omezení

Následující seznam popisuje omezení na úrovni serveru a obecná omezení:

  • Ces se nepodporuje v SQL Serveru 2025 (17.x) v Linuxu.
  • CES generuje události pouze pro změny dat z INSERT, UPDATE a DELETE DML příkazů.
  • CES nezpracuje změny schématu (operace DDL), což znamená, že negeneruje události pro operace DDL. Operace DDL ale nejsou blokované, takže pokud je spustíte, schéma následných událostí DML odráží aktualizovanou strukturu tabulky. Očekává se, že budete řádně zpracovávat události s aktualizovaným schématem.
  • V současné době CES nestreamuje data, která existují v tabulce předtím, než je CES povolen. Existující data nejsou nezpracovávají ani neodesílají jako snímek, když je povolen CES.
  • Pokud zpráva překročí limit velikosti zprávy služby Azure Event Hubs, je tato chyba aktuálně pozorovatelná pouze prostřednictvím rozšířených událostí. Ces xEvents jsou aktuálně k dispozici pouze v SQL Serveru 2025, a ne v Azure SQL Database.
  • Přejmenování tabulek a sloupců nakonfigurovaných pro CES se nepodporuje. Přejmenování tabulky nebo sloupce se nezdaří. Přejmenování databáze je povoleno.
  • CES není k dispozici pro službu Azure SQL Managed Instance nakonfigurovanou pomocí SQL Serveru 2022 zásad aktualizace. Je k dispozici pouze pro instance nakonfigurované pomocí zásad aktualizace SQL Serveru 2025 nebo Always-up-to-date.
  • Při použití protokolu Kafka CES nepodporuje autentizaci SAS tokenů. Jediné dostupné autentizační metody jsou Microsoft Entra a klíč pro politiku sdíleného přístupu.

Omezení na úrovni databáze

Následující seznam popisuje omezení na úrovni databáze:

  • CES podporuje pouze databáze nakonfigurované s úplným modelem obnovení.
  • CES nepodporuje databáze nakonfigurované jako Fabric Mirrored Databases pro SQL Server, s transakční replikací, snímáním změn dat nebo Azure Synapse Link. Sledování změn je podporováno u databází nakonfigurovaných pro CES.
  • CES může streamovat pouze z zapisovatelných primárních databází. Sekundární databáze, které jsou součástí skupin dostupnosti AlwaysOn nebo které používají propojení spravované instance , není možné nakonfigurovat jako zdroje streamování.
  • CES nemůžete povolit u zobrazení nebo indexovaných zobrazení.
  • Můžete nakonfigurovat až 4 096 skupin datových proudů. Každá skupina datových proudů může obsahovat až 40 000 tabulek.

Omezení na úrovni tabulky

Následující seznam popisuje omezení na úrovni tabulky:

  • Tabulka může patřit pouze do jedné skupiny streamování. Stejnou tabulku nelze streamovat do více cílů.
  • Pro CES můžete konfigurovat pouze uživatelské tabulky. CES nepodporuje tabulky systému streamování.
  • I když je CES v tabulce povolená, nemůžete do této tabulky přidat ani odebrat omezení primárního klíče.
  • Názvy tabulek obsahující tečku (.) nejsou v současnosti podporovány.
  • ALTER TABLE SWITCH PARTITION nepodporuje tabulky nakonfigurované pro CES.
  • TRUNCATE TABLE není podporován u tabulek povolených pro CES.
  • CES nepodporuje tabulky, které používají některou z následujících funkcí:
    • Clusterované sloupcové indexy
    • Dočasné tabulky historie nebo tabulky historie účetní knihy
    • Trvale šifrováno
    • OLTP v paměti (tabulky optimalizované pro paměť)
    • Grafové tabulky
    • Externí tabulky

Důležité

Online indexovací operace můžou generovat značné množství záznamů transakčního protokolu. CES musí zpracovávat výrazně více dat, což může vést ke zvýšení latence událostí.

Omezení na úrovni sloupců

Následující seznam popisuje omezení na úrovni sloupců:

  • CES nepodporuje následující datové typy. Streamování přeskočí sloupce těchto typů:
    • geography
    • geometry
    • image
    • json
    • rowversion / časová značka
    • sql_variant
    • Text / Ntext
    • vector
    • xml
    • Uživatelem definované typy (UDT)
  • Pokud je jedna nebo více hodnot streamovaných sloupců větší než 1 MB, CES zkrátí každou ovlivněnou hodnotu sloupce na 1 MB dříve, než vytvoří odchozí událost. Toto zkrácení je bezpodmínečné a nezaznamenává chyby ani varování. Nakonfigurujte možnost konfigurace serveru max text repl size tak, aby bylo možné při povolené funkci CES zapsat do sloupců LOB více než 65 536 bajtů.

Oprávnění ve zdrojové databázi a umístění dat

Následující seznam popisuje oprávnění a omezení pobytu dat:

  • Pro zabezpečení na úrovni řádků generuje CES změny ze všech řádků bez ohledu na uživatelská oprávnění.
  • Dynamické maskování dat se nevztahuje na data odesílaná přes CES. Data se streamují bez maskování, i když je nakonfigurované maskování.
  • CES negeneruje události související se změnami oprávnění na úrovni objektu (například udělení oprávnění konkrétním sloupcům).
  • Ces streamuje data do nakonfigurovaného cíle, pokud to konfigurace sítě umožňuje. Pokud je cíl v jiné oblasti, CES streamuje data napříč oblastmi. Ujistěte se, že splňuje požadavky na rezidenci dat a dodržování předpisů.

Sítě a možnosti připojení

Následující seznam popisuje omezení sítě a konektivity:

  • V současné době může CES streamovat pouze do veřejných koncových bodů služby Azure Event Hubs. Koncové body služby a privátní koncové body se v současné době nepodporují.
  • V Azure SQL Database blokuje síťový bezpečnostní perimetr v režimu vynuceného cíle, pokud odchozí pravidlo neoznačí jeho FQDN. Fungují pouze pravidla založená na FQDN. Bez pravidla sp_create_event_stream_group selže s chybou 23674, stav 1, vrácena jako chyba 23626.
  • Poté, co změna pravidla perimetru zablokuje cíl, existující stream přestane publikovat a v sys.dm_change_feed_errors zaznamená chybu 23674. Změny obvodu se uplatňují okamžitě a samotná skupina proudu se nemění. Protože datový proud nemůže předávat data, nelze transakční protokol zkrátit. Pro více informací viz Růst transakčních logů.
  • Při použití protokolu AMQP na Azure SQL Managed Instance nebo SQL Server 2025 (pro stávající skupiny streamů, které ještě nebyly migrovány), nastavte možnost konfigurace minimální TLS verze Azure Event Hubs na 1.2. CES nefunguje s TLS 1.3 přes protokol AMQP.