Konfigurera strömning av ändringshändelser (förhandsversion) för Azure Event Hubs

Gäller för: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Den här artikeln beskriver hur man konfigurerar funktionen change event streaming (CES) i SQL Server 2025 (17.x), Azure SQL Database, Azure SQL Managed Instance och SQL Database i Microsoft Fabric för strömning till Azure Event Hubs.

För att konfigurera CES till Fabric Eventstream, se Stream to Fabric Eventstream.

Anmärkning

Strömning av ändringshändelser är för närvarande i förhandsversion och skiljer sig när det gäller support mellan olika produkter. Den här funktionen kan komma att ändras under förhandsversionen.

Proprodur för strömning av förändringshändelser

  1. Använd en befintlig eller skapa en ny Azure Event Hubs-namnrymd och Event Hubs-instans. Event Hubs-instansen tar emot händelser.
  2. Aktivera ändringshändelseströmning för en användardatabas.
  3. Skapa en strömgrupp. Med den här gruppen konfigurerar du mål, autentiseringsuppgifter, storleksgränser för meddelanden och partitioneringsschema.
  4. Lägg till en eller flera tabeller i strömgruppen.

Varje steg beskrivs i detalj i följande avsnitt i den här artikeln.

Förutsättningar

Viktigt!

Från och med den 15 augusti 2026 är AMQP-protokollet föråldrat för change event streaming (CES). Det finns skillnader mellan plattformarna. För migreringssteg och tidslinjer, se AMQP-protokollets avvikelse.

För att konfigurera ändringshändelseströmning behöver du följande resurser, behörigheter och konfiguration:

När du använder ändringshändelseströmning med Azure SQL Managed Instance måste instansen konfigureras med SQL Server 2025- eller Always-up-to-date uppdateringsprincipen.

Konfigurera Azure Event Hubs

Mer information om hur du skapar Azure Event Hubs finns i Skapa en händelsehubb med hjälp av Azure-portalen.

Åtkomstkontroll för Azure Event Hubs

Konfigurera åtkomstkontroll för din SQL-resurs till Azure Event Hubs. Microsoft Entra autentisering är den säkraste metoden. CES stöder Microsoft Entra-autentisering i Azure SQL Database och Azure SQL Managed Instance. För SQL Server 2025 stöds Microsoft Entra-autentisering från och med Cumulative Update 3 (CU3) för instanser som aktiveras av Azure Arc eller körs på en Azure-VM. Principer för delad åtkomst stöds, men använd dem endast när Microsoft Entra autentisering inte är ett alternativ.

Principer för delad åtkomst ger autentisering och auktorisering till Azure Event Hubs. Varje princip för delad åtkomst behöver ett namn, en åtkomstnivå (Manage, Sendeller Listen) och en resursbindning (Event Hubs-namnområde eller en specifik Händelsehubbinstans). Instansnivåprinciper ger mer säkerhet genom att följa principen om lägsta behörighet. Även om SQL Database Engine-produkter stödjer delade åtkomstpolicyer, använd Microsoft Entra-autentisering när det är möjligt, eftersom det ger bättre säkerhet.

Om du använder en shared access-policy för autentisering och auktorisation måste klienter som skickar data till en Event Hubs-instans ange namnet på policyn de vill använda, tillsammans med policyns tjänstenyckel.

För att konfigurera strömning till Azure Event Hubs skapar eller återanvänder du en princip för delad åtkomst med behörigheten Send. Du kan autentisera dig med en tjänstenyckel (primär- eller sekundärnyckelvärde).

Anmärkning

För bättre säkerhet använder du Microsoft Entra-baserad åtkomstkontroll när det är möjligt. Om Microsoft Entra-baserad åtkomstkontroll inte är möjlig och du använder delade åtkomstpolicys är bästa praxis att rotera tjänstenyckeln periodiskt. Lagra alla hemligheter på ett säkert sätt med hjälp av Azure Key Vault eller en liknande tjänst.

Definiera en policy

Du behöver en delad åtkomstpolicy med Skicka-rättigheter . Du kan antingen:

  • Skapa en ny policy

    Eller

  • Använda en befintlig policy

Anmärkning

Policyn måste ha sändrättigheter.

När policyn är fastställd, notera tjänstenyckelns värde. Du använder den, tillsammans med policynamnet, när du skapar legitimationen i SQL innan du konfigurerar CES.

Aktivera och konfigurera ändringshändelseströmning

Viktigt!

Från och med den 15 augusti 2026 är AMQP-protokollet föråldrat för change event streaming (CES). Det finns skillnader mellan plattformarna. För migreringssteg och tidslinjer, se AMQP-protokollets avvikelse.

Om du vill aktivera och konfigurera ändringshändelseströmning ändrar du databaskontexten till användardatabasen och följer sedan dessa steg:

  1. Om den inte redan har konfigurerats anger du databasen till den fullständiga återställningsmodellen.
  2. Skapa en huvudnyckel och en databasspecifik autentiseringsuppgift.
  3. Aktivera händelseströmning.
  4. Skapa streamgruppen.
  5. Lägg till en eller flera tabeller i strömgruppen.

Följande exempel visar hur man aktiverar CES per plattform:

Följande tabell listar exempelparametrar för exemplen i detta avsnitt:

Parameter Exempelvärde Noteringar
@stream_group_name N'myStreamGroup' Namnet på gruppen för händelseströmmar.
@destination_location Se noteringar FQDN för Azure Event Hubs-namnrymden och instansnamnet, inklusive port 9093. Format: <namespace>.servicebus.windows.net:9093/<instance>. Använd den anpassade indataslutpunkten för Fabric Eventstream.
@partition_key_scheme N'None' (Standard) Partitioner väljs i tur och ordning. Andra alternativ är StreamGroup, Table, och Column.
@max_message_size_kb 256 256 KB är standardens maximala meddelandestorlek. Anpassa detta värde till dina destinationsgränser.

Exemplen använder också följande värden:

  • [valfritt, om delade åtkomstpolicyer via tjänstenyckel används] Primär- eller sekundärnyckelvärde hämtat från delad åtkomstpolicy: Secret = 'BVFnT3baC/K6I8xNZzio4AeoFt6nHeK0i+ZErNGsxiw='
  • EXEC sys.sp_add_object_to_event_stream_group N'myStreamGroup', N'dbo.myTable'

Exempel: Strömma till Azure Event Hubs från Azure SQL Database

Följande exempel visar hur man strömmar ändrade händelser till Azure Event Hubs från Azure SQL Database genom att använda AzureEventHubs som .destination_type Detta värde är det enda accepterade värdet för Azure SQL Database och SQL-databas i Microsoft Fabric.

Exemplet i detta avsnitt använder Microsoft Entra-autentisering. Den här metoden är den säkraste.

Ersätt värdena i vinkelparenteser (<value>) med värden för din miljö.

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>'

Exempel: Strömma till Azure Event Hubs från Azure SQL MI eller SQL Server 2025

Följande exempel visar hur man strömmar ändringshändelser till Azure Event Hubs från Azure SQL Managed Instance eller SQL Server 2025 genom att använda AzureEventHubsApacheKafka som destination_type.

Viktigt!

Från och med den 15 augusti 2026 är AMQP-protokollet föråldrat för change event streaming (CES). Det finns skillnader mellan plattformarna. För migreringssteg och tidslinjer, se AMQP-protokollets avvikelse.

Exemplet i det här avsnittet använder Microsoft Entra-autentisering för att autentisera till din Azure Event Hubs-instans via Apache Kafka-protokollet. Den här metoden är den säkraste.

Ersätt värdena i vinkelparenteser (<value>) med värden för din miljö.

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>'

För att bekräfta att streaming är aktiverat och för att se tabeller konfigurerade för en strömgrupp, se View CES configuration and function.

Meddelandestorlek och kolumnavkortning

Azure Event Hubs och Fabric Eventstream begränsar den maximala storleken på varje meddelande de får. CES använder inställningen @max_message_size_kb för att dela upp en stor utgående händelse i flera meddelandedelar som passar den konfigurerade destinationen. Ställ in detta värde så att det stämmer överens med gränserna för din destination. För JSON-attributen som identifierar meddelandebitar, se JSON message format - change event streaming.

Om en eller flera strömmade kolumnvärden är större än 1 MB, avkortar CES varje påverkad kolumnvärde till 1 MB innan den utgående händelsen bildas. 1 MB-gränsen gäller för varje kolumnvärde separat. Denna avkortning är skild från uppdelning av meddelanden. Efter att ha trunkerat överdimensionerade kolumnvärden bildar CES den utgående händelsen, delar upp den i delar efter behov enligt @max_message_size_kb, och skickar varje chunk till destinationen.

Ställ in serverkonfigurationsalternativet max text repl size så att mer än 65 536 byte kan skrivas till LOB-kolumner när CES är aktiverat.

Till exempel, om en rad har fem kolumner och de tre första kolumnvärdena är större än 1 MB, CES:

  1. Förkortar värdet på den första kolumnen till 1 MB.
  2. Förkortar värdet på den andra kolumnen till 1 MB.
  3. Kortar värdet på tredje kolumnen till 1 MB.
  4. Förbereder den utgående händelsen, delar upp den i det erforderliga antalet chunks enligt @max_message_size_kb, och skickar varje chunk till destinationen.

Anmärkning

Avkortning av kolumndata sker alltid. CES trunkerar varje strömmat kolumnvärde som är större än 1 MB och loggar varken fel eller varningar när detta inträffar.

Visa CES-konfiguration och -funktion

I sys.databasesis_event_stream_enabled = 1 anger att ändringshändelseströmning är aktiverat för databasen.

Följande fråga returnerar alla databaser med ändringshändelseströmning aktiverad:

SELECT *
FROM sys.databases
WHERE is_event_stream_enabled = 1;

I sys.tablesis_replicated = 1 anger du att en tabell strömmas och sp_help_change_feed_table innehåller information om tabellgruppen och tabellmetadata för ändringshändelseströmning.

Följande fråga returnerar alla tabeller med ändringshändelseströmning aktiverat och innehåller metadatainformation:

SELECT name,
       is_replicated
FROM sys.tables;

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

CES-lagrade procedurer, systemfunktioner och DMV:er

I följande tabell visas de lagrade procedurer, systemfunktioner och DMV:er som du kan använda för att konfigurera, inaktivera och övervaka ändringshändelseströmning:

Systemobjekt Beskrivning
Konfigurera CES
sys.sp_aktivera_händelseström Aktiverar CES för den aktuella användardatabasen.
sys.sp_create_event_stream_group Skapar en strömgrupp, som är en direktuppspelningskonfiguration för en grupp tabeller. Strömgruppen definierar också målet och relaterad information (till exempel autentisering, meddelandestorlek, partitionering). Stream_group_id genereras automatiskt och visas för slutanvändaren när proceduren är klar.
sys.sp_add_object_to_event_stream_group Lägger till en tabell i dataströmsgruppen.
Inaktivera CES
sys.sp_remove_object_from_event_stream_group Tar bort en tabell från strömgruppen.
sys.sp_drop_event_stream_group Släpper flödesgruppen. Strömgruppen får inte användas.
sys.sp_disable_event_stream Inaktiverar CES för den aktuella användardatabasen.
Övervaka CES
sys.dm_change_feed_errors Returnerar leveransfel.
sys.dm_change_feed_log_scan_sessions Returnerar information om logggenomsökningsaktivitet.
sys.sp_help_change_feed_settings Ger status och information om konfigurerad ändringshändelseströmning.
sys.sp_help_change_feed Övervakar den aktuella konfigurationen av ändringsströmmen.
sys.sp_help_change_feed_table_groups Returnerar metadata som används för att konfigurera grupper för strömmande ändringshändelser.
sys.sp_help_change_feed_table Tillhandahåller status och information för den strömmande gruppen och ändringshändelseströmningens tabellmetadata.

Tillväxt av transaktionslogg

Eftersom meddelandeleverans garanteras kan transaktionsloggen för en databas som har CES aktiverat fortsätta att växa. Trunkering av logg förhindras så länge det finns CES-ändringar att hämta från loggen. När transaktionsloggens storlek når den maximala definierade gränsen misslyckas skrivningar till databasen.

För att förhindra detta i Azure SQL Database och Azure SQL Managed Instance kan Microsoft inaktivera CES eller stoppa långvariga transaktioner när transaktionsloggens storlek närmar sig den maximala definierade gränsen. För ohanterade SQL Server-instanser, till exempel lokalt eller på SQL Server på virtuella Azure-datorer, ansvarar du för att övervaka transaktionsloggens storlek och se till att den inte når den maximala definierade gränsen och manuellt inaktivera CES eller döda långvariga transaktioner om det behövs.

När CES har inaktiverats eller en tidskrävande transaktion har avlivats trunkeras transaktionsloggen för att frigöra utrymme. Du måste aktivera CES manuellt igen efter att det har inaktiverats eller försöka igen med långkörande transaktioner som har avbrutits. Dataändringar som gjorts medan CES inaktiverades registreras inte. Endast ändringar som görs efter att CES har startats om strömmas.

Följande är en lista över typiska scenarier som kan leda till tillväxt av transaktionsloggar med CES aktiverat:

  • Beständiga fel. CES försöker skicka ett meddelande som avvisas upprepade gånger och CES kan inte fortsätta. Orsaker till beständiga fel som kan leda till avvisade meddelanden är:
    • Nätverksproblem eller felkonfiguration.
    • Felaktig konfiguration av autentiseringsuppgifter.
    • Felkonfigurerad maximal meddelandestorlek som målet avvisar.
  • Destinationen begränsar inkommande händelser. Till exempel hastighetsbegränsningar för Azure Event Hubs baserat på dess SKU.
  • Tidskrävande transaktioner som genererar många loggposter och förhindrar loggtrunkering.

För att säkerställa smidig drift, övervaka regelbundet storleken på transaktionsloggen och CES-leveransfelen.

Performance

På elastiska SQL Server-, Azure SQL Managed Instance- och Azure SQL Database-pooler kan du aktivera CES på flera databaser. Varje CES-aktiverad databas förbrukar serverresurser och konkurrerar med andra serverarbetsbelastningar. Kontrollera att servern har tillräckliga resurser för den förväntade arbetsbelastningen och övervaka serverns och databasernas prestanda regelbundet.

Begränsningar

Ändringshändelseströmning (CES) har följande begränsningar:

Plattformsspecifika begränsningar

På SQL-produkter konfigurerade med en icke-UTC-tidszon committime innehåller fältet i ett meddelande om strömning av förändringshändelse felaktigt ett Z-suffix, även om detta fält visar den lokala tiden för publiceringsdatabasen. När databasen använder UTC stämmer värdet och suffixet överens. Detta problem är känt och en fix väntar i en framtida version av funktionen.

Följande begränsningar gäller för specifika plattformar för CES:

CES i SQL Server 2025 har följande begränsningar:

Begränsningar på servernivå och allmänna begränsningar

Följande lista beskriver servernivå- och allmänna begränsningar:

  • CES stöds inte på SQL Server 2025 (17.x) i Linux.
  • CES genererar endast händelser för dataändringar från INSERT, UPDATEoch DELETE DML-instruktioner.
  • CES hanterar inte schemaändringar (DDL-åtgärder), vilket innebär att det inte genererar händelser för DDL-åtgärder. DDL-åtgärder blockeras dock inte, så om du kör dem återspeglar schemat för efterföljande DML-händelser den uppdaterade tabellstrukturen. Du förväntas hantera händelser korrekt med det uppdaterade schemat.
  • För närvarande strömmar CES inte data som finns i en tabell innan CES aktiveras. Befintliga data är inte seedade eller skickas som en ögonblicksbild när CES är aktiverat.
  • Om ett meddelande överskrider storleksgränsen för Azure Event Hubs-meddelanden kan felet för närvarande bara observeras via Utökade händelser. CES xEvents är för närvarande endast tillgängliga i SQL Server 2025 och inte i Azure SQL Database.
  • Det går inte att byta namn på tabeller och kolumner som konfigurerats för CES. Det går inte att byta namn på en tabell eller kolumn. Databasbyten tillåts.
  • CES är inte tillgängligt för Azure SQL Managed Instance som konfigurerats med SQL Server 2022-uppdateringsprincipen. Den är endast tillgänglig för instanser som konfigurerats med SQL Server 2025- eller Always-up-to-date update-principen.
  • När man använder Kafka-protokollet stöder CES inte SAS-tokenautentisering. De enda tillgängliga autentiseringsmetoderna är Microsoft Entra och Shared Access policy key value.

Begränsningar på databasnivå

Följande lista beskriver begränsningar på databasnivå:

Begränsningar på tabellnivå

Följande lista beskriver begränsningar på tabellnivå:

  • En tabell kan bara tillhöra en strömningsgrupp. Du kan inte strömma samma tabell till flera mål.
  • Du kan bara konfigurera användartabeller för CES. CES stöder inte systemtabeller för direktuppspelning.
  • Även om CES är aktiverat i en tabell kan du inte lägga till eller släppa en primärnyckelbegränsning i tabellen.
  • Tabellnamn som innehåller en punkt (.) stöds för närvarande inte.
  • ALTER TABLE SWITCH PARTITION stöds inte på tabeller som konfigurerats för CES.
  • TRUNCATE TABLE stöds inte på tabeller som är aktiverade för CES.
  • CES stöder inte tabeller som använder någon av följande funktioner:
    • Grupperade kolumnlagringsindex
    • Tabeller för tidshistorik eller registerhistoriktabeller
    • Alltid Krypterad
    • Minnesintern OLTP (minnesoptimerade tabeller)
    • Grafiktabeller
    • Externa tabeller

Viktigt!

Onlineindexåtgärder kan generera stora mängder transaktionsloggposter. CES måste bearbeta betydligt mer data, vilket kan leda till ökad händelsefördröjning.

Begränsningar på kolumnnivå

Följande lista beskriver begränsningar på kolumnnivå:

  • CES stöder inte följande datatyper. Direktuppspelning hoppar över kolumner av dessa typer:
    • geography
    • geometry
    • image
    • json
    • rowversion / timestamp
    • sql_variant
    • Text / Ntext
    • vector
    • xml
    • Användardefinierade typer (UDT)
  • Om en eller flera strömmade kolumnvärden är större än 1 MB, avkortar CES varje påverkad kolumnvärde till 1 MB innan den utgående händelsen bildas. Denna trunkering är ovillkorlig och loggar inga fel eller varningar. Konfigurera serverkonfigurationsalternativet max text repl size så att mer än 65 536 byte kan skrivas till LOB-kolumner när CES är aktiverat.

Behörigheter i källdatabasen och datahemvist

Följande lista beskriver behörigheter och begränsningar för dataresidens:

  • För säkerhet på radnivå genererar CES ändringar från alla rader, oavsett användarbehörighet.
  • Dynamisk datamaskning gäller inte för data som skickas via CES. Data strömmas omaskerade, även om maskering har konfigurerats.
  • CES genererar inte händelser som rör behörighetsändringar på objektnivå (till exempel att bevilja behörigheter till specifika kolumner).
  • CES strömmar data till det konfigurerade målet om nätverkskonfigurationen tillåter det. Om målet finns i en annan region strömmar CES data mellan regioner. Se till att detta uppfyller dina krav på datahemvist och efterlevnad.

Nätverk och anslutning

Följande lista beskriver en nätverks- och anslutningsbegränsning:

  • För närvarande kan CES endast strömma till offentliga Slutpunkter i Azure Event Hubs. Tjänstslutpunkter och privata slutpunkter stöds inte för närvarande.
  • När du använder AMQP-protokollet på Azure SQL Managed Instance eller SQL Server 2025 (för befintliga strömgrupper som ännu inte migrerats), ställ in Azure Event Hubs Minimum TLS-konfigurationsalternativ till 1.2. CES fungerar inte med TLS 1.3 över AMQP-protokollet.