Aracılığıyla paylaş


CDC ile ilgili bilinen sınırlamalar, sorunlar ve hatalar

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Bu makalede, SQL Server ve Azure SQL Yönetilen Örneğiiçin değişiklik veri yakalama (CDC) ile ilgili bilinen sınırlamalar, sorunlar ve hatalar açıklanmaktadır.

Azure SQL Veritabanı'nda CDC ile ilgili bilinen sorunlar için bkz. .

Meta verileri değiştirme

CDC'nin düzgün çalışması için CDC schema, tabloları değiştirme, CDC sistem saklı yordamları, varsayılan cdc user izinleri (sys.database_principals) gibi CDC meta verilerini el ile değiştirmemeli veya cdc useryeniden adlandırmamalısınız.

sys.objectsis_ms_shipped özelliği 1 olarak ayarlanmış nesneler değiştirilmemelidir.

SELECT    name AS object_name   
        ,SCHEMA_NAME(schema_id) AS schema_name  
        ,type_desc  
        ,is_ms_shipped  
FROM sys.objects 
WHERE is_ms_shipped= 1 AND SCHEMA_NAME(schema_id) = 'cdc'

Harmanlama farklılıkları

Veritabanı ile değişiklik verisi yakalama için yapılandırılmış bir tablonun sütunları arasında farklı harmanlamaların olduğu bir durumun farkında olmanız önemlidir. CDC, yan tabloları doldurmak için ara depolama kullanır. Tabloda veritabanı harmanlamasından farklı harmanlamalar içeren sütunlar karakter veya varchar varsa ve bu sütunlar ASCII olmayan karakterler depolarsa (çift bayt DBCS karakterleri gibi), CDC değiştirilen verileri temel tablolardaki verilerle tutarlı olarak kalıcı hale getiremeyebilir. Bunun nedeni geçici depolama değişkenlerinin bunlarla ilişkilendirilmiş harmanlamalar içerememeleridir.

Yakalanan değişiklik verilerinin temel tablolarla tutarlı olduğundan emin olmak için aşağıdaki yaklaşımlardan birini göz önünde bulundurun:

  • ASCII olmayan veriler içeren sütunlar için nchar veya nvarchar veri türünü kullanın.

  • Alternatif olarak, sütunlar ve veritabanı için aynı harmanlamayı kullanın.

Örneğin, SQL_Latin1_General_CP1_CI_AS harmanlama kullanan bir veritabanınız varsa aşağıdaki tabloyu göz önünde bulundurun:

CREATE TABLE T1( 
     C1 INT PRIMARY KEY, 
     C2 VARCHAR(10) collate Chinese_PRC_CI_AI)

Harmanlaması farklı olduğundan (Chinese_PRC_CI_AI) CDC, C2 sütunu için ikili verileri yakalayamayabilir. Bu sorunu önlemek için nvarchar kullanın:

CREATE TABLE T1( 
     C1 INT PRIMARY KEY, 
     C2 NVARCHAR(10) collate Chinese_PRC_CI_AI --Unicode data type, CDC works well with this data type
     )

Hızlandırılmış veritabanı kurtarma (ADR) ve değişiklik veri yakalama (CDC)

Aynı veritabanı için hem değişiklik veri yakalamasını (CDC) hem de hızlandırılmış veritabanı kurtarmasını (ADR) etkinleştirme, SQL Server 2019'da (15.x) desteklenmez. HEM CDC hem de ADR'nin etkinleştirilmesi, SQL Server 2022 (16.x) Toplu Güncelleştirme 18 ile başlayan sonraki SQL Server sürümlerinde desteklenir.

CDC'yi etkinleştirdiğinizde, ADR'nin agresif günlük kesme özelliği devre dışı bırakılır. Bunun nedeni, CDC taramasının veritabanı işlem günlüğüne erişmesidir. Etkin işlemler, işlem sonuçlanana ve CDC taraması yetişene ya da işlem iptal edilene kadar işlem günlüğünün kesilmesini tutmaya devam eder. ADR'nin etkinleştirildiği bir veritabanında CDC'yi etkinleştirirseniz daha yüksek işlem günlüğü kullanımı gözlemleyebilirsiniz. Tüm iş yüklerinizin ihtiyaçları için yeterli işlem günlüğü alanının kullanılabilir olduğundan emin olun.

Şema veya adlı cdc kullanıcı zaten varsa CDC'yi etkinleştirme işlemi başarısız oluyor

Bir veritabanında CDC'yi etkinleştirdiğinizde, cdcadlı yeni bir şema ve kullanıcı oluşturur. Bu nedenle, cdc adlı bir özel şema veya kullanıcının el ile oluşturulması önerilmez, çünkü bu sistem kullanımı için ayrılmıştır.

Veritabanınızda CDC ile ilgili olmayan cdc adlı bir özel şemayı veya kullanıcıyı el ile tanımladıysanız, sistem saklı yordamı sys.sp_cdc_enable_db aşağıdaki hata iletisiyle veritabanında CDC'yi etkinleştiremez.

The database <database_name> cannot be enabled for change data capture because a database user named 'cdc' or a schema named 'cdc' already exists in the current database. These objects are required exclusively by CDC. Drop or rename the user or schema and retry the operation.

Bu sorunu çözmek için:

  • Boş cdc şemasını ve boş cdc kullanıcıyı manuel olarak silin. Ardından, CDC veritabanında başarıyla etkinleştirilebilir.

ALTER COLUMN sonrasında CDC başarısız oluyor

CDC özellikli bir tablodaki bir sütunun veri türü desteklenmeyen bir dönüştürmeye değiştirildiğinde, CDC taraması güncelleştirmeden sonra hatalara neden olabilir.

CdC bir tabloda etkinleştirildiğinde desteklenmeyen veri türü değişikliklerine örnekler ALTER COLUMN aşağıda verilmiştir:

  • bigint türünü int türüne dönüştür
  • char(x), nvarchar(x) veya nvarchar(x) dönüştürmek için uniqueidentifier, DATE veya INT

CDC özellikli bir tablodaki bir sütunun veri türünü değiştirmek aşağıdaki hatalara neden olabilir:

  • Hata 241 - Karakter dizesinden tarih ve/veya saat dönüştürülürken dönüştürme başarısız oldu.
  • Hata 245 - Değer dönüştürülürken dönüştürme başarısız oldu.
  • Hata 8169 - Karakter dizesinden benzersiz belirleyiciye dönüştürülürken dönüştürme başarısız oldu.

DDL deyimlerini kullanarak CDC özellikli tablonun sütunlarının boyutunu değiştirmek, sonraki CDC yakalama işlemiyle ilgili sorunlara neden olabilir ve aşağıdaki hatalara neden olabilir:

  • Hata 2628 - Dize veya ikili veriler tabloda kesilebilir.
  • Hata 8115 - Veri türünü bigint'ten int'e dönüştürme aritmetik taşma hatası

CDC değişiklik tablolarındaki verilerin kullanıcı tarafından yapılandırılan ayarlara göre tutulduğunu unutmayın. Bu nedenle, sütun boyutunda herhangi bir değişiklik yapmadan önce, değişikliğin CDC değişiklik tablolarındaki mevcut verilerle uyumlu olup olmadığını değerlendirmeniz gerekir.

sys.dm_cdc_errors Taramaların Hata 2628 veya Değişiklik tabloları için Hata 8115 nedeniyle başarısız olduğunu gösteriyorsa, önce etkilenen değişiklik tablolarındaki değişiklik verilerini kullanmanız gerekir. Bundan sonra, sorunu etkili bir şekilde çözmek için devre dışı bırakmanız ve ardından tabloda CDC yeniden etkinleştirmeniz gerekir.

CREATE OBJECT tetikleyicileri mevcut olduğunda CDC'yi etkinleştirme başarısız oluyor

CDC'yi etkinleştirdiğinizde, CDC oluşturma işlemini yönetmek için bir cdc user oluşturulur. cdc user CDC'yi etkinleştirmek için bir dizi saklı yordam çalıştırır ve bu saklı yordamlardan bazıları mevcut CREATE OBJECT tetikleyicilerini tetikleyen nesneler oluşturur. cdc user'nin master veritabanına yazma izni olmadığından, bu CDC saklı yordamları 22830 hatasıyla başarısız oluyor.

Bir veritabanında CDC'yi etkinleştirmeden önce CREATE OBJECT tetikleyicilerini devre dışı bırakın. CDC yapılandırıldıktan sonra bu tetikleyicileri yeniden etkinleştirin.

Veri katmanı İçeri/Dışarı Aktarma ve Ayıklama/Yayımlama işlemlerini kullanarak veritabanını içeri aktarma

CDC özellikli SQL veritabanlarında, İçeri/Dışarı Aktarmak veya Ayıklamak/Yayımlamak için SqlPackage, SSDT veya diğer SQL araçlarını kullandığınızda, cdc şeması ve kullanıcı yeni veritabanında dışlanır. İçeri/Dışarı Aktarma ve Ayıklama/Dağıtma işlemlerine dahil olmayan diğer CDC nesneleri, içinde is_ms_shipped=1olarak sys.objects işaretlenmiş tabloları içerir.

CDC etkinleştirilmemiş olsa ve veritabanınızda cdc adlı özel bir şema veya kullanıcı tanımlamış olsanız bile, yeni bir veritabanını içeri aktarmak/ayarlamak için İçeri/Dışarı Aktarma ve Ayıklama/Dağıtma işlemlerinde de dışlanacaktır.

Değişkenlerle bölüm değiştirme

Değişiklik verisi yakalama (CDC) işleviyle bölüm değiştirmenin yapıldığı veritabanları veya tablolar üzerinde değişkenlerin kullanımı, ALTER TABLE ... SWITCH TO ... PARTITION ... deyimi için desteklenmez. Daha fazla bilgi edinmek için bkz. bölüm değiştirme sınırlamaları .

Çevrimiçi işlemler

Çevrimiçi DDL deyimleri desteklenmiyor

Azure SQL Yönetilen Örnek ve SQL Server'ın SQL Server 2025 (17.x) öncesi sürümlerinde, bir veritabanında değişiklik verisi yakalama etkin olduğunda ALTER TABLE çevrimiçi DDL deyimleri desteklenmez.

Çevrimiçi dizin işlemleri desteklenmiyor

Veritabanında değişiklik veri yakalama etkinleştirildiğinde çevrimiçi dizin işlemleri desteklenmez. Hata 18773: "%.*ls" sütunu için metin bilgisi kayıtları bulunamadı, komut oluşturma sırasında kimlik %d.

Eklenen sütunlarda varsayılan kısıtlamalar

Bir tabloda CDC etkinleştirildiğinde ve varsayılan kısıtlamaya sahip null atanamayan bir sütun eklendiğinde, var olan satır verileri varsayılan kısıtlamanın değerine sahip olur. Ancak CDC, NULL satırlar için varsayılan değer yerine kullanacaktır. Bu yalnızca DDL uygulanmadan önce mevcut veriler için geçerlidir. Geçici bir çözüm olarak, mevcut satırlara değişmeyen UPDATE deyimler iletin veya tablonun kümelenmiş dizininde bir ALTER INDEX ... REBUILD gerçekleştirin. Kümelenmiş dizin yoksa, ALTER TABLE ... REBUILD'yu yığında kullanın.

Sorun giderme

Bu bölümde, SQL Server ve Azure SQL Yönetilen Örneği üzerinde CDC ile ilişkili hataları giderme adımları gösterilmektedir. CDC ile ilgili hatalar, yakalama işleminin düzgün çalışmasını engelleyebilir ve veritabanı işlem günlüğünün genişletilmesine yol açabilir.

Bu hataları incelemek için sys.dm_cdc_errorsdinamik yönetim görünümünü sorgulayabilirsiniz. sys.dm_cdc_errors dinamik yönetim görünümü herhangi bir hata döndürüyorsa aşağıdaki sorun giderme bilgilerini gözden geçirin.

Not

Belirli bir hata kodu hakkında daha fazla bilgi için bkz. Veritabanı Altyapısı olayları ve hataları.

Bu bölümde yer alan farklı sorun giderme kategorileri şunlardır:

Kategori Açıklama
Meta veriler değiştirildi CDC ile ilgili sorunların, izlenen tablo değiştirildiğinde veya bırakıldığında nasıl azaltılacağına ilişkin bilgiler içerir.
Veritabanı alanı yönetimi Veritabanı alanı tükendiğinde sorunların nasıl azaltıldığına ilişkin bilgiler içerir.
CDC sınırlamaları CDC sınırlamalarının neden olduğu sorunları azaltma hakkında bilgi içerir.

Meta veriler değiştirildi

Hata 200/208 - Geçersiz nesne adı

  • Neden: CDC meta verileri silindiğinde hata oluşabilir. CDC'nin düzgün çalışması için CDC schema, tabloları değiştirme, CDC sistem saklı yordamları, varsayılan cdc user izinleri (sys.database_principals) gibi CDC meta verilerini el ile değiştirmemeli veya cdc useryeniden adlandırmamalısınız.

  • Öneri: Bu sorunu gidermek için veritabanınız için CDC'yi devre dışı bırakmanız ve yeniden etkinleştirmeniz gerekir. Veritabanı için değişiklik veri yakalamayı etkinleştirirken, veritabanı için cdc şemasını, cdc kullanıcısını, meta veri tablolarını ve diğer sistem nesnelerini oluşturur.

Not

ile is_ms_shipped=1 and schema_name='cdc' sistem kataloğu görünümünde bulunan nesneler değiştirilmemeli veya bırakılmamalıdır.

Hata 1202 - Veritabanı sorumlusu yok veya kullanıcı üye değil

  • Neden: cdc user bırakıldığında hata oluşabilir. CDC'nin düzgün çalışması için, gibi CDC schemaherhangi bir CDC meta verisini el ile değiştirmemeniz, tabloları, CDC sistemi saklı yordamlarını, varsayılan cdc user izinleri değiştirmemeniz veya yeniden adlandırmamanız cdc usergerekir.

  • Öneri: cdc kullanıcının veritabanınızda mevcut olduğundan ve ayrıca db_owner rolünün atandığından emin olun. cdc kullanıcısını oluşturmak için, cdc kullanıcısı oluşturma verol atama örneğine bakın.

Hata 15517 - Sorumlu mevcut olmadığından veritabanı sorumlusu olarak yürütülemiyor

  • Neden: Bu tür bir sorumlu kimliğine bürünemez veya izniniz yok. CDC meta verileri bırakıldığında veya artık db_owner rolünün bir parçası olmadığında hata oluşabilir. CDC'nin düzgün çalışması için, gibi CDC schemaherhangi bir CDC meta verisini el ile değiştirmemeniz, tabloları, CDC sistemi saklı yordamlarını, varsayılan cdc user izinleri değiştirmemeniz veya yeniden adlandırmamanız cdc usergerekir.

  • Öneri: cdc kullanıcının veritabanınızda mevcut olduğundan ve ayrıca db_owner rolünün atandığından emin olun. cdc kullanıcısını oluşturmak için, cdc kullanıcısı oluşturma verol atama örneğine bakın.

Hata 18807 - Çoğaltma sistemi tablosu için nesne kimliği bulunamıyor

  • Neden: Bu hata, SQL Server '%s' çoğaltma sistemi tablosunu bulamadıklarında veya bu tabloya erişemiyorsa oluşur. Bunun nedeni tablonun eksik veya ulaşılamaz olması olabilir. CDC'nin düzgün çalışması için, gibi CDC schemaherhangi bir CDC meta verisini el ile değiştirmemeniz, tabloları, CDC sistemi saklı yordamlarını, varsayılan cdc user izinleri değiştirmemeniz veya yeniden adlandırmamanız cdc usergerekir.

  • Öneri: Sistem tablosunun var olduğunu ve tabloyu doğrudan sorgulayarak erişilebilir olduğunu doğrulayın. sys.objects sistem kataloğunu sorgula, koşul yan tümcesini ile ayarlayarak CDC ile is_ms_shipped=1 and schema_name='cdc' ilgili tüm nesneleri listeleyin. Sorgu herhangi bir nesne döndürmezse, veritabanınız için CDC'yi devre dışı bırakmanız ve yeniden etkinleştirmeniz gerekir. Veritabanı için değişiklik verilerini yakalamayı etkinleştirmek, veritabanı için cdc şemasını, cdc kullanıcısını, meta veri tablolarını ve diğer sistem nesnelerini oluşturur.

Hata 21050 - Yalnızca sysadmin veya db_owner sabit sunucu rolünün üyeleri bu işlemi gerçekleştirebilir

  • Neden: cdc userdb_owner veritabanı rolünden veya sysadmin sunucu rolünden kaldırılmıştır.

  • Öneri: cdc user rolünün db_owner'ye atanmış olduğundan emin olun. cdc kullanıcısını oluşturmak için, cdc kullanıcısı oluşturma verol atama örneğine bakın.

Hata 22830 - Veri Yakalamayı Değiştir için veritabanı <database name> etkinleştirildiğini gösteren meta veriler güncelleştirilemedi. <CDC stored procedure name>komutu yürütülürken hata oluştu.

  • Neden: Bu hata, veritabanında veya sunucuda bir CREATE OBJECT tetikleyici bulunduğunda oluşur. CDC'yi etkinleştirdiğinizde, CDC oluşturma işlemini yönetmek için bir cdc user oluşturulur. cdc user CDC'yi etkinleştirmek için bir dizi saklı yordam çalıştırır ve bu saklı yordamlardan bazıları mevcut CREATE OBJECT tetikleyicilerini tetikleyen nesneler oluşturur. cdc user'nin master veritabanına yazma izni olmadığından, bu CDC saklı yordamları 22830 hatasıyla başarısız oluyor.

  • Öneri: Bir veritabanında CDC'yi etkinleştirmeden önce CREATE OBJECT tetikleyicilerini devre dışı bırakın. CDC yapılandırıldıktan sonra bu tetikleyicileri yeniden etkinleştirin.

Veritabanı alanı yönetimi

Hata 1105 - Dosya grubu dolu olduğundan veritabanında nesne için alan ayrılamadı

  • Neden: Bu hata, veritabanının birincil dosya grubunun alanı dolduğunda ve SQL Server söz konusu dosya grubundaki bir nesne (tablo veya dizin gibi) için daha fazla alan ayıramadığında oluşur.

  • Öneri: Bu sorunu çözmek için veritabanınızdaki gereksiz verileri silip yer açın. Dosya grubundaki güvenli bir şekilde kaldırılabilir kullanılmayan tabloları, dizinleri veya diğer nesneleri tanımlayın. Alan kullanımını yakından izleme, daha fazla bilgi için bkz. Azure SQL Veritabanı'ndaki veritabanları için dosya alanını yönetme

    Gereksiz verileri/nesneleri bırakmanın bir seçenek olmaması durumunda, veritabanı işlem günlüğünüz için daha fazla alan ayırmayı göz önünde bulundurun. İşlem günlüğü yönetimi hakkında daha fazla bilgi için bkz. SQL Server işlem günlüğü mimarisi ve yönetim kılavuzu

CDC sınırlamaları

Hata 241 - Karakter dizesinden tarih ve/veya saat dönüştürülürken dönüştürme başarısız oldu

  • Neden: Alter COLUMN bir tarih veri türünde gerçekleştirildiğinde ve tabloda CDC etkinleştirildiğinde bu hata oluşur. Örneğin, bir tabloda nvarchar sütunu varsa ve veri türünü tarih olarak değiştirirseniz (örneğin, ALTER TABLE table_name ALTER COLUMN [column_name] DATE NULL), sys.dm_cdc_errors DMV'de bu hatayı görebilirsiniz. Hata 241, kaynak tablodaki komut başarılı olsa bile değişiklik tablosunda desteklenmeyen ALTER bir veri dönüştürme işleminden kaynaklanır.

  • Öneri: Bu sorunu çözmek için, sütunu değiştirdikten sonra tablonuz için CDC'yi devre dışı bırakın ve yeniden etkinleştirin. Alternatif olarak, sütunu değiştirmeden önce CDC'yi devre dışı bırakın ve değişiklik sonrasında CDC'yi ALTER COLUMN yeniden başlatın.

Hata 245 - Değer dizeden int'e dönüştürülürken dönüştürme başarısız oldu

  • Neden: Bu hata, tabloda CDC etkinleştirildiğinde sütunun veri türünü değiştirmek için ALTER COLUMN komutu verildiğinde oluşur. Örneğin, bir tabloda nvarchar sütunu varsa ve veri türünü int (örneğin, ALTER TABLE table_name ALTER COLUMN [column_name] INT NULL) olarak değiştirirseniz , sys.dm_cdc_errors DMV'de bu hatayı görebilirsiniz. Hata 245, kaynak tablodaki komut başarılı olsa bile değişiklik tablosunda desteklenmeyen ALTER bir veri dönüştürme işleminden kaynaklanır.

  • Öneri: Bu sorunu çözmek için, sütunu değiştirdikten sonra tablonuz için CDC'yi devre dışı bırakın ve yeniden etkinleştirin. Alternatif olarak, sütunu değiştirmeden önce CDC'yi devre dışı bırakın ve değişiklik sonrasında CDC'yi ALTER COLUMN yeniden başlatın.

Hata 913 - Sistem CLR veri türüne sahip bir tablo için değişiklikler işlenirken CDC yakalama işi başarısız oluyor

  • Neden: CdC sistem CLR veri türüne sahip bir tabloda CDC etkinleştirilirken, DML değişiklikleri yapılırken ve cdc yakalama işi diğer tablolarla ilgili değişiklikleri işlerken aynı tabloda DDL değişiklikleri yapılırken bu hata oluşur.

  • Öneri: Önerilen adımlar DML'yi tabloya sessizce eklemek, değişiklikleri işlemek için bir yakalama işi çalıştırmak, tablo için DDL çalıştırmak, DDL değişikliklerini işlemek için bir yakalama işi çalıştırmak ve ardından DML işlemeyi yeniden etkinleştirmektir. Daha fazla bilgi için bkz. Sistem CLR veri türüne (geometri, coğrafya veya hierarchyid) sahip bir tablo için değişiklikler işlenirken CDC yakalama işi başarısız oluyor.

Hata 2628 - dize veya ikili veriler tabloda kesilebilir

  • Neden: DDL deyimlerini kullanarak CDC özellikli tablonun sütunlarının boyutunu değiştirmek, sonraki CDC yakalama işleminde sorunlara neden olabilir. sys.dm_cdc_errors Dinamik Yönetim Görünümü (DMV), 2628 ve 8115 hataları gibi bildirilen sorunlar için cdc'yi denetlemek için kullanışlıdır.

  • Öneri: Sütun boyutunda değişiklik yapmadan önce, değişikliğin CDC değişiklik tablolarındaki mevcut verilerle uyumlu olup olmadığını değerlendirmeniz gerekir. Bu sorunu gidermek için veritabanınız için CDC'yi devre dışı bırakmanız ve yeniden etkinleştirmeniz gerekir. Bir veritabanı veya tablo için CDC'yi etkinleştirme hakkında daha fazla bilgi için bkz. Veritabanı için CDC'yi etkinleştirme vebir tablo için CDC'yi etkinleştirme .

Hata 8115 - Veri türünü bigint'ten int'e dönüştürme aritmetik taşma hatası

  • Neden: Bu hata, CDC özellikli bir tabloda ALTER COLUMN DDL yürütülürse oluşur ve bu da sütunun duyarlığında azalmaya neden olur (örneğin, sütunun veri türünü bigint'tenint'e değiştirme). Azaltılan duyarlık sütunu, değişiklik tablosunda bulunan değerleri tutamıyor.

  • Öneri: Bu sorunu çözmek için, sütunu değiştirdikten sonra tablonuz için CDC'yi devre dışı bırakın ve yeniden etkinleştirin. Alternatif olarak, komutu çalıştırmadan önce CDC'yi ALTER COLUMN devre dışı bırakın ve değişiklik sonrasında CDC'yi ALTER COLUMN yeniden başlatın.

Hata 8169 - Karakter dizesinden uniqueidentifier'a dönüştürülürken dönüştürme başarısız oldu

  • Neden: Tabloda CDC etkinleştirildiğinde sütunun veri türünü değiştirmek için ALTER COLUMN komutu verildiğinde bu hata oluşur. Örneğin, bir tabloda char(x), nvarchar(x), nvarchar(x) sütunu varsa ve veri türünü uniqueidentifier (örneğin: ALTER TABLE table_name ALTER COLUMN [column_name] uniqueidentifier) olarak değiştirirseniz , sys.dm_cdc_errors Dinamik Yönetim Görünümü'nde (DMV) bu hatayı görebilirsiniz. Hata 8169, kaynak tablodaki ALTER komutu başarılı olsa bile değişiklik tablosunda desteklenmeyen bir veri dönüştürmeyi gösterir.

  • Öneri: Bu sorunu çözmek için, sütunu değiştirdikten sonra tablonuz için CDC'yi devre dışı bırakın ve yeniden etkinleştirin. Alternatif olarak, komutu çalıştırmadan önce CDC'yi ALTER COLUMN devre dışı bırakın ve değişiklik sonrasında CDC'yi ALTER COLUMN yeniden başlatın.

Kullanıcı oluşturma ve rol atama

cdc user kaldırıldıysa, kullanıcıyı el ile geri ekleyebilirsiniz.

Aşağıdaki T-SQL betiğini kullanarak bir kullanıcı oluşturun (cdc) ve bu kullanıcı için uygun rolü (db_owner) atayın.

IF NOT EXISTS 
(
    SELECT * 
    FROM sys.database_principals 
    WHERE NAME = 'cdc'
)
BEGIN
    CREATE USER [cdc] 
    WITHOUT LOGIN WITH DEFAULT_SCHEMA = [cdc];
END

EXEC sp_addrolemember 'db_owner', 'cdc';

Rol üyeliğini denetleme ve ekleme

cdc kullanıcının sysadmin veya db_owner rolüne ait olup olmadığını doğrulamak için aşağıdaki T-SQL sorgusunu çalıştırın:

EXECUTE AS USER = 'cdc';

SELECT is_srvrolemember('sysadmin'), is_member('db_owner');

cdc kullanıcı iki role de ait değilse, db_owner kullanıcıya cdc rol eklemek için aşağıdaki T-SQL sorgusunu yürütür.

EXEC sp_addrolemember 'db_owner' , 'cdc';