Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uygulandığı yer: SQL Server 2025 (17.x)
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Bu makale, SQL Server 2025 (17.x), Azure SQL Veritabanı, Azure SQL Yönetilen Örneği içinde Change event Streaming (CES) özelliğini kullandığınızda Azure Event Hubs veya Fabric Eventstream'e akan CloudEvents mesaj formatını açıklarve Microsoft Fabric'te SQL veritabanı ile birlikte bulundu.
Uyarı
Change event streaming şu anda önizleme aşamasında ve ürünler arasında desteklenebilirlik farklılıkları var. Önizleme sırasında bu özellik değiştirilebilir.
Genel Bakış
Change event streaming CloudEvents spesifikasyonuna uygun etkinlikler yayıyor, böylece bunları olay odaklı sistemlerle kolayca entegre edebilirsiniz. Tüm CES CloudEvents 11 öznitelik (alan) içerir. CES'i, özniteliği dahil data tüm CloudEvent'i yerel JSON veya Avro ikili olarak serileştirmek için yapılandırabilirsiniz. Yerel JSON etkinliklerinde Avro ikili bölümleri bulunmaz. Her iki serileştirme formatında da niteliğin data bayt-dizi tipi vardır. Baytlar, seçilen serileştirme formatına göre JSON veya Avro ikili kodlamasını kullanır ve CES veri özniteliği Avro şemasını takip eder.
Important
15 Ağustos 2026 itibarıyla, AMQP protokolü değişiklik olay akışı (CES) için kullanımdan kaldırılmıştır. Platformlar arasında farklılıklar var. Göç adımları ve zaman çizelgeleri için AMQP protokolünün kullanımdan kaldırılmasına bakınız.
İlgili belirtimler ve kaynaklar
Uygun olduğunda, bu bölümdeki açıklamalar daha fazla detay içeren CloudEvent spesifikasyonundan alınmıştır.
Özellikler
specversion:- Veri türü: Dize
- Gerekli CloudEvent özniteliği
- Olayın kullandığı CloudEvents belirtiminin sürümü. Bu versiyon, bağlamın yorumlanmasını mümkün kılar.
type- Veri türü: Dize
- Gerekli CloudEvent özniteliği
- Kaynak oluşumla ilgili olay türünü açıklayan bir değer içerir. Bu değerin formatı üretici tarafından tanımlanır ve tipin versiyonu gibi bilgileri içerebilir. Daha fazla bilgi için CloudEvents'in Sürüm Seçimi bölümüne bakınız.
- Change event streaming events için şu anda tür:
com.microsoft.SQL.CES.DML.V{n}, burada{n}Microsoft change event streaming DML olay şemasının versiyonunu gösterir.- Mevcut en güncel şema sürümü 1.
source- Veri türü: Dize
- Gerekli CloudEvent özniteliği
- Bir olayın gerçekleştiği bağlamı tanımlar. Kaynak ve kimlik kombinasyonu her olay için benzersiz olmalıdır. Şu anda bu alan her zaman SQL'den yayınlanan olaylar gibi gönderilir
\/.
id- Veri türü: Dize
- Gerekli CloudEvent özniteliği
- Olayı tanımlar. Yapımcılar, kaynak ve kimlik kombinasyonunun her ayrı olay için benzersiz olmasını sağlamalıdır. Yinelenen bir olay yineleniyorsa (örneğin, bir ağ hatası nedeniyle) aynı kimlikte olabilir. Tüketiciler, özdeş kaynağa ve kimliğe sahip olayların yinelenen olduğunu varsayabilir.
logicalid- Veri türü: Dize
- Uzantı özniteliği
- Paylaşılan mantıksal kimlikler, bölünmüş mesajları tanımlar (Event Hubs mesaj boyutu kısıtlamaları nedeniyle).
time- Veri türü: Zaman damgası
- İsteğe bağlı CloudEvent özniteliği
- Bir SQL işleminde yapılan ve akışlı bir olayı tetikleyen bir işlem içinde commit gerçekleştiği zaman damgası.
datacontenttype- Veri türü: Dize
- İsteğe bağlı CloudEvent özniteliği
- Veri değerinin içerik türü. Bu öznitelik, verilerin herhangi bir içerik türünü taşımasına olanak tanır ve burada biçim ve kodlama seçilen olay biçiminden farklı olabilir. Örneğin, JSON zarf biçimi kullanılarak işlenen bir olay verilerde xml yükü taşıyabilir ve tüketiciye bu özniteliğin "application/xml" olarak ayarlandığı bildirilir. Veri içeriğinin farklı
datacontenttypedeğerler için nasıl işlendiğine dair kurallar, olay formatı spesifikasyonlarında tanımlanmıştır.
operation- Veri türü: Dize
- Uzantı özniteliği
- Gerçekleşen SQL işleminin türünü temsil eder:
- Eklemeler için INS
- Güncellemeler için GÜNCELLEME
- Silme işlemleri için DEL
segmentindex- Veri türü: Tamsayı
- Uzantı özniteliği
- Segment indeksi, mesajın mantıksal mesaj parçaları içindeki konumunu gösterir. Segment dizini, iletinin mantıksal ileti parçaları dizisinde nerede durduğu hakkında bilgi sağlar. Bu alan her zaman mevcut.
logicalidBüyük SQL yük bölünmesini temsil eden gelen olayları yapılandırma değerinesegmentindexgöre sıralamak için ,finalsegment, vemax_message_size_kbalanları kullanın.
finalsegment- Veri türü: Boole dili
- Uzantı özniteliği
- Bu segmentin dizinin son bölümü olup olmadığını gösterir. Bu alan her zaman mevcuttur ve bir SQL olayının yapılandırılmış
max_message_size_kbdeğere göre alt olaylara bölünüp bölünmediğini belirlemeye yardımcı olur.
data- Veri türü: Bayt dizisi
- İsteğe bağlı CloudEvent özniteliği
- Değişikliği tanımlayan alana özgü olay verilerini içerir. Baytları seçilen serileştirme formatına göre JSON veya Avro ikili olarak serilikten çıkar. Serilerden arındırılmış veriler, CES veri özniteliği Avro şemasını takip eder. Alanları hakkında bilgi için bkz. Veri öznitelik formatı.
Uyarı
Mesaj bölme, sütun değeri kesintisinden ayrıdır. CES özniteliği data serileştirmeden önce, 1 MB'den büyük her akış sütun değerini 1 MB'a kısaltır. CES daha sonra oluşturulan olayı gerektiğinde mesaj parçalarına böler.max_message_size_kb
Örnekler
JSON ileti örneği - ekleme
{
"specversion": "1.0",
"type": "com.microsoft.SQL.CES.DML.V1",
"source": "\/",
"id": "56cb8ff3-5c55-4f3b-a7f7-b044d1933ef6",
"logicalid": "1bf2756a-c15f-4d2e-a2d5-7d3f9dbf85b0:000000B1000008A80007:00000000000000000001",
"time": "2026-08-07T16:25:00.890Z",
"datacontenttype": "application\/json",
"operation": "INS",
"segmentindex": 0,
"finalsegment": true,
"data": "{\"eventsource\":{\"db\":\"EmployeesDb\",\"schema\":\"dbo\",\"tbl\":\"Employees\",\"cols\":[{\"name\":\"Id\",\"type\":\"int\",\"index\":0},{\"name\":\"FirstName\",\"type\":\"nvarchar(50)\",\"index\":1},{\"name\":\"LastName\",\"type\":\"nvarchar(50)\",\"index\":2},{\"name\":\"SignupDate\",\"type\":\"datetime2(7)\",\"index\":3}],\"pkkey\":[{\"columnname\":\"Id\",\"value\":\"8\"}],\"transaction\":{\"commitlsn\":\"000000B1:000008A8:0007\",\"beginlsn\":\"000000B1:000008A8:0003\",\"sequencenumber\":1,\"finalevent\":false,\"committime\":\"2026-08-07T16:25:00.890Z\"}},\"eventrow\":{\"old\":\"{}\",\"current\":\"{\\\"Id\\\":\\\"8\\\",\\\"FirstName\\\":\\\"Nikola\\\",\\\"LastName\\\":\\\"Nikolic\\\",\\\"SignupDate\\\":\\\"2026-08-07 16:25:00.8833333\\\"}\"}}"
}
JSON mesaj örneği - güncelleme
{
"specversion": "1.0",
"type": "com.microsoft.SQL.CES.DML.V1",
"source": "\/",
"id": "19221db1-a1b5-4ec7-8937-3fdf9d762abb",
"logicalid": "1bf2756a-c15f-4d2e-a2d5-7d3f9dbf85b0:000000B1000009300009:00000000000000000001",
"time": "2026-08-07T16:30:10.123Z",
"datacontenttype": "application\/json",
"operation": "UPD",
"segmentindex": 0,
"finalsegment": true,
"data": "{\"eventsource\":{\"db\":\"EmployeesDb\",\"schema\":\"dbo\",\"tbl\":\"Employees\",\"cols\":[{\"name\":\"Id\",\"type\":\"int\",\"index\":0},{\"name\":\"FirstName\",\"type\":\"nvarchar(50)\",\"index\":1},{\"name\":\"LastName\",\"type\":\"nvarchar(50)\",\"index\":2},{\"name\":\"SignupDate\",\"type\":\"datetime2(7)\",\"index\":3}],\"pkkey\":[{\"columnname\":\"Id\",\"value\":\"8\"}],\"transaction\":{\"commitlsn\":\"000000B1:00000930:0009\",\"beginlsn\":\"000000B1:00000930:0002\",\"sequencenumber\":1,\"finalevent\":false,\"committime\":\"2026-08-07T16:30:10.123Z\"}},\"eventrow\":{\"old\":\"{\\\"Id\\\":\\\"8\\\",\\\"FirstName\\\":\\\"Nikola\\\",\\\"LastName\\\":\\\"Nikolic\\\",\\\"SignupDate\\\":\\\"2026-08-07 16:25:00.8833333\\\"}\",\"current\":\"{\\\"Id\\\":\\\"8\\\",\\\"FirstName\\\":\\\"Nikola\\\",\\\"LastName\\\":\\\"Nikolic-Smith\\\",\\\"SignupDate\\\":\\\"2026-08-07 16:25:00.8833333\\\"}\"}}"
}
JSON ileti örneği - delete
{
"specversion": "1.0",
"type": "com.microsoft.SQL.CES.DML.V1",
"source": "\/",
"id": "520f9a65-43d7-47f2-94f5-7ea14df635ed",
"logicalid": "1bf2756a-c15f-4d2e-a2d5-7d3f9dbf85b0:000000B1000009700008:00000000000000000001",
"time": "2026-08-07T16:35:42.450Z",
"datacontenttype": "application\/json",
"operation": "DEL",
"segmentindex": 0,
"finalsegment": true,
"data": "{\"eventsource\":{\"db\":\"EmployeesDb\",\"schema\":\"dbo\",\"tbl\":\"Employees\",\"cols\":[{\"name\":\"Id\",\"type\":\"int\",\"index\":0},{\"name\":\"FirstName\",\"type\":\"nvarchar(50)\",\"index\":1},{\"name\":\"LastName\",\"type\":\"nvarchar(50)\",\"index\":2},{\"name\":\"SignupDate\",\"type\":\"datetime2(7)\",\"index\":3}],\"pkkey\":[{\"columnname\":\"Id\",\"value\":\"8\"}],\"transaction\":{\"commitlsn\":\"000000B1:00000970:0008\",\"beginlsn\":\"000000B1:00000970:0003\",\"sequencenumber\":1,\"finalevent\":false,\"committime\":\"2026-08-07T16:35:42.450Z\"}},\"eventrow\":{\"old\":\"{\\\"Id\\\":\\\"8\\\",\\\"FirstName\\\":\\\"Nikola\\\",\\\"LastName\\\":\\\"Nikolic-Smith\\\",\\\"SignupDate\\\":\\\"2026-08-07 16:25:00.8833333\\\"}\",\"current\":\"{}\"}}"
}
Veri özniteliği biçimi
Bu öznitelik data bayt dizisi olarak tanımlanır. Baytları seçilen serileştirme formatına göre JSON veya Avro ikili olarak serilikten çıkar. Her iki formatta da, ortaya çıkan Data kayıt CES veri özniteliği Avro şemasını takip eder ve iki öznitelik içerir:
eventsourceeventrow
{
"data": "{\"eventsource\": {}, \"eventrow\": {\"old\": \"{}\", \"current\": \"{}\"}}"
}
Aşağıdaki bölümler, seri dışı özelliklerin daha ayrıntılı açıklandığını açıklar.
eventsource
Veritabanı ve olayın oluştuğu tablo hakkındaki meta verileri açıklar:
db- Veri türü: Dize
- Açıklama: Tablonun bulunduğu veritabanının adı.
- Örnek:
EmployeesDb
schema- Veri türü: Dize
- Açıklama: Tabloyu içeren veritabanı şeması.
- Örnek:
dbo
tbl- Veri türü: Dize
- Açıklama: Olayın gerçekleştiği tablo.
- Örnek:
Employees
cols- Veri türü: Dizi
- Açıklama: Tablodaki sütunların ayrıntılarını gösteren bir dizi.
-
name(ip): Sütunun adı. -
type(dizgi): Sütunun SQL veri tipi, uzunluğu, hassasiyeti veya uygun olduğunda ölçeği dahil olmak üzere. Örnek olarakint,nvarchar(50)vedatetime2(7)verilebilir. -
index(tam sayı): Tablodaki sütunun indeks veya konumu.
-
pkkey- Veri türü: Dizi
- Açıklama: Birincil anahtar sütunlarını ve belirli bir satırı tanımlamak için bunların değerlerini temsil eder.
-
columnname(dize): Birincil anahtarda kullanılan sütunun adı. -
value(diz): Birincil anahtarda kullanılan sütunun değeri. Bu değer, satırın benzersiz şekilde tanımlanmasına yardımcı olur.
-
transaction- Veri türü: Nesne
- Açıklama: Veri işlemini içeren SQL işlemini tanımlar.
-
commitlsn(dize): İşlemin commit log dizisi numarası (LSN). -
beginlsn(dize): İşlemin başlangıç LSN'si. -
sequencenumber(tam sayı): İşlem içindeki veri işleminin ardışık sayı. Bu değeri bir işlem içindeki olayları sıralamak için kullanın. -
finalevent(boolean): Kullanılmıyor. Bu alan her zaman değere sahiptir.false -
committime(dizgi): İşlemin veritabanında gerçekleştiği tarih ve saat.
-
Uyarı
UTC dışı bir zaman dilimi ile yapılandırılmış SQL ürünlerinde, committime alan yanlış bir Z eki içerir, oysa bu alan yayınlama veritabanının yerel zamanını gösterir. Veritabanı UTC kullandığında, değer ve ekler aynı şekilde karşılık verir. Bu sorun biliniyor ve özelliğin gelecekteki bir sürümünde bir düzeltme bekleniyor.
eventrow
Satır düzeyi değişiklikleri açıklar ve kayıttaki alanların eski ve geçerli değerlerini karşılaştırır.
-
old (dizeye sarmalanan nesne): Olaydan önceki satırdaki değerleri temsil eder.
- Her anahtar-değer çifti şunlardan oluşur:
-
<column_name>: (dize): Sütunun adı. -
<column_value>: (string/int/etc.): Bu sütunun önceki değeri.
-
- Her anahtar-değer çifti şunlardan oluşur:
-
current (dizeye sarmalanan nesne): Olaydan sonraki satırdaki güncelleştirilmiş değerleri temsil eder.
- Her anahtar-değer çifti şu şekilde yapılandırılmış eski nesneye benzer:
-
<column_name>(dize): Sütunun adı. -
<column_value>(string/int/etc.): Bu sütunun yeni veya geçerli değeri.
-
- Her anahtar-değer çifti şu şekilde yapılandırılmış eski nesneye benzer:
CES CloudEvent Avro şeması
{
"type": "record",
"name": "ChangeEvent",
"fields": [
{
"name": "specversion",
"type": "string"
},
{
"name": "type",
"type": "string"
},
{
"name": "source",
"type": "string"
},
{
"name": "id",
"type": "string"
},
{
"name": "logicalid",
"type": "string"
},
{
"name": "time",
"type": "string"
},
{
"name": "datacontenttype",
"type": "string"
},
{
"name": "operation",
"type": "string"
},
{
"name": "segmentindex",
"type": "int"
},
{
"name": "finalsegment",
"type": "boolean"
},
{
"name": "data",
"type": "bytes"
}
]
}
CES veri özniteliği Avro şeması
Yerel JSON ve Avro ikili CloudEvents'te bayt dizisini seri dışı data bırakırken aşağıdaki şemayı kullanın:
{
"name": "Data",
"type": "record",
"fields": [
{
"name": "eventsource",
"type": {
"name": "EventSource",
"type": "record",
"fields": [
{
"name": "db",
"type": "string"
},
{
"name": "schema",
"type": "string"
},
{
"name": "tbl",
"type": "string"
},
{
"name": "cols",
"type": {
"type": "array",
"items": {
"name": "Column",
"type": "record",
"fields": [
{
"name": "name",
"type": "string"
},
{
"name": "type",
"type": "string"
},
{
"name": "index",
"type": "int"
}
]
}
}
},
{
"name": "pkkey",
"type": {
"type": "array",
"items": {
"name": "PkKey",
"type": "record",
"fields": [
{
"name": "columnname",
"type": "string"
},
{
"name": "value",
"type": "string"
}
]
}
}
},
{
"name": "transaction",
"type": {
"name": "Transaction",
"type": "record",
"fields": [
{
"name": "commitlsn",
"type": "string"
},
{
"name": "beginlsn",
"type": "string"
},
{
"name": "sequencenumber",
"type": "int"
},
{
"name": "finalevent",
"type": "boolean"
},
{
"name": "committime",
"type": "string"
}
]
}
}
]
}
},
{
"name": "eventrow",
"type": {
"name": "EventRow",
"type": "record",
"fields": [
{
"name": "old",
"type": "string"
},
{
"name": "current",
"type": "string"
}
]
}
}
]
}