SQL Server'ı yardımcı nesne betiğini kullanarak alıma hazırlama

Lakeflow Connect kullanarak Azure Databricks'e almak için SQL Server veritabanı kurulum görevlerini tamamlayın.

Gereksinimler

  • Betiği çalıştıran kullanıcının, db_owner rolüne üye olması gerekir. Bu rol yalnızca kurulum betiğini çalıştırmak için gereklidir, veri alma kullanıcısı için değildir.

db_owner rolüne bir kullanıcı eklemek için aşağıdaki yöntemlerden birini kullanın:

  • Modern SQL Server (2012+): Kullan ALTER ROLE

    USE [your_database];
    ALTER ROLE db_owner ADD MEMBER [your_setup_user];
    GO
    
  • Eski SQL Server veya kısıtlanmış ortamlar: sp_addrolemember Kullan

    USE [your_database];
    EXEC sp_addrolemember 'db_owner', 'your_setup_user';
    GO
    
  • CT kurulumu için: Değişiklik izleme platformda aktif olmalıdır.

  • CDC kurulumu için: Değişiklik verisi yakalama platformda kullanılabilir olmalıdır.

Adım 1: Yardımcı nesneleri kur veya yükseltin

Bu adım, SQL Server kurulumu için gereken yardımcı program saklı yordamlarını ve işlevlerini yükler. Yüklenenler hakkında ayrıntılı bilgi için bkz. SQL Server hizmet nesneleri betik referansı.

Aynı betik hem ilk kurulumu hem de önceki sürümden yükseltmeyi yönetiyor. Aşağıdaki numaralandırılmış adımları takip edin. İşaretlenmiş (Sadece Yükseltme) adımlar, yalnızca yardımcı nesnelerin önceki bir sürümü zaten yüklüyse geçerlidir. İlk kurulum için onları atlayın.

Important

(Yalnızca yükseltme için) Betiği çalıştırmadan önce gateway’i durdurun (gateway tabanlı işlem hattı) veya işlem hattını duraklatın (entegre CDC). Duraklatma, şema değişikliğinin hızlı başarısız olmasını ve kısa geçiş sırasında tekrar deneme gerektirmesini önler.

  1. Komut dosyasını indirin.

    utility_script.sql'ı indirin

  2. Betiği SQL Server Management Studio (SSMS), Azure Data Studio veya tercih ettiğiniz SQL istemcisinde açın.

  3. SQL Sunucu örneğine, db_owner rolüne sahip bir kullanıcı olarak bağlanın.

  4. Hedef veritabanına bağlı olduğunuzdan emin olun.

  5. (Yalnızca yükseltme için) Veri alımını duraklatın: ağ geçidini durdurun (ağ geçidi tabanlı işlem hattı) veya işlem hattını duraklatın (entegre CDC).

  6. Scripti çalıştırın. Bir yükseltmede, script yardımcı fonksiyonları yeniden oluşturur ve sadece eski replicant-prefix nesneleri kaldırır. Mevcut DDL destek nesnelerinizi yerinde bırakıyor, böylece mevcut DDL tetikleyicisi, kurulum prosedürlerini bir sonraki adımda yeniden çalıştırana kadar şema değişikliklerini yakalamaya devam ediyor.

  7. (Sadece yükseltme) Kullandığınız her yakalama yöntemi için kurulum prosedürünü tekrar çalıştırın: lakeflowSetupChangeTracking değişiklik izleme kullanıyorsanız ve lakeflowSetupChangeDataCapture CDC kullanıyorsanız. Bu, nesnelerinizi yeni sürüme taşır ve alma kullanıcısının izinlerini geri yükler. Yalnızca @User geçirin. @Tables öğesine ihtiyacınız yoktur, çünkü değişiklik izleme ve CDC, yükseltme sırasında tablolarınızda etkin kalır.

    -- If you use change tracking:
    EXEC dbo.lakeflowSetupChangeTracking
        @User = 'your_ingestion_user';  -- omit @User if you did not pass it originally
    
    -- If you use CDC:
    EXEC dbo.lakeflowSetupChangeDataCapture
        @User = 'your_ingestion_user';  -- omit @User if you did not pass it originally
    

    Yükseltmenin yapılandırmanızı korumak için varsayılan olmayan seçenekleri tekrar geçin:

    • Değişiklik takib: Varsayılan olarak DDL denetim tablosu ve tetikleyici oluşturulmuyor, bu yüzden çoğu yükseltme burada ekstra bir şey vermiyor. Kurulumunuz DDL şema değişikliği yakalamayı kullanıyorsa (bir lakeflowDdlAudit tablosuna sahipse), bu nesneleri yeni sürüme taşımak için lakeflowSetupChangeTracking üzerinde @CreateDdlSupportingObjects = 1 parametresini belirtin. Bu seçenek mevcut olmadan önce yapılan kurulumlar bunları otomatik olarak oluşturdu; bu nedenle, DDL yakalamaya güveniyorsanız, onu hiç ayarlamamış olsanız bile bayrağı ekleyin.
    • CDC:lakeflowSetupChangeDataCapture üzerinde @AllowDisablePreExistingCaptureInstances = 1 kullanıyorsanız, yeniden ekleyin.
  8. Yüklemeyi doğrulayın:

    SELECT dbo.lakeflowUtilityVersion() AS UtilityVersion;
    SELECT dbo.lakeflowDetectPlatform() AS Platform;
    
  9. (Yalnızca yükseltme için) Alımı sürdür: ağ geçidini veya işlem hattını yeniden etkinleştir.

Uyarı

db_owner Rol yalnızca bu kurulum betiğini çalıştıran kullanıcı için gereklidir. İngestion kullanıcısı (sonraki adımlarda @User parametresi içinde belirtilen), yalnızca kurulum prosedürleri tarafından verilen belirli izinleri gerektirir. Ayrıntılar için bkz. Microsoft SQL Server veritabanı kullanıcı gereksinimleri .

Uyarı

(Sadece yükseltme) Yükseltme penceresinde izlenen tablolarda şema değişiklikleri yapmaktan kaçının. Kesitleme işlemi bir işlemde çalışır, yani eşzamanlı şema değişikliği kaybolmaz, ancak kısa süreliğine bloklanabilir veya hızlı bir şekilde başarısız olabilir ve kesitleme tamamlanana kadar tekrar deneme gerekebilir.

2. Adım: Değişiklik izlemeyi etkinleştirme (birincil anahtarlara sahip tablolar için)

Değişiklik izleme, tablo satırlarına yapılan değişiklikleri izleyen basit bir mekanizmadır. Bu adım, belirlenen tablolarda veritabanı düzeyinde CT yapılmasını mümkün kılar. Şema değişikliklerini (DDL) de yakalamak için, DDL destek nesnelerini oluşturacak şekilde @CreateDdlSupportingObjects = 1 parametresini iletin. Bu varsayılan olarak isteğe bağlı ve kapalıdır. Ayrıntılar için lakeflowSetupChangeTracking'ye bakın. SQL Server yardımcı programı nesneleri komut dosyası referansı.

-- Enable change tracking on specific tables
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'Sales.Orders,Production.Products,HR.Employees',
    @User = 'your_ingestion_user',
    @Retention = '2 DAYS';

Alternatif seçenekler:

  • Birincil anahtarlara sahip tüm tablolar için: @Tables = 'ALL'
  • Belirli şemalar için: @Tables = 'SCHEMAS:Sales,HR,Production'
  • Yalnızca veritabanı düzeyinde kurulum için (tablo etkinleştirme yok): @Tables = NULL

3. Adım: Değişiklik verilerini yakalamayı etkinleştirme (birincil anahtar içermeyen tablolar için)

CDC ekleme, güncelleştirme ve silme etkinliğini yakalar ve birincil anahtar içermeyen tablolar için özellikle yararlıdır. Bu adım, CDC'yi veritabanı düzeyinde etkinleştirir, yakalama örneği yönetimini ayarlar ve otomatik şema değişikliği işleme için tetikleyiciler oluşturur. Ayrıntılar için lakeflowSetupChangeDataCapture'ye bakın. SQL Server yardımcı programı nesneleri komut dosyası referansı.

-- Enable CDC on specific tables (particularly those without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'Staging.ImportData,Logs.AuditTrail',
    @User = 'your_ingestion_user';

Alternatif seçenekler:

  • Tüm tablolar için: @Tables = 'ALL'
  • Belirli şemalar için: @Tables = 'SCHEMAS:Sales,HR'
  • Yalnızca veritabanı düzeyinde kurulum için: @Tables = NULL

Lakeflow Connect'in, bir tablonun önceden var olan (Lakeflow dışı) CDC yakalama örneğini olduğu gibi bırakmak yerine devralmasını sağlamak için @AllowDisablePreExistingCaptureInstances = 1 ayarını yapın.

Uyarı

Değişiklik izlemeyi, CDC'yi veya her ikisini de kullanabilirsiniz. Databricks, kapsamlı bir izleme sağlamak amacıyla birincil anahtarlara sahip tablolar için değişiklik izlemenin (2. adım) ve birincil anahtarı olmayan tablolar için CDC'nin (3. adım) kullanılmasını önerir.

Örnek yönetimini kontrol etme

Lakeflow Connect, diğer sistemler veya işlemler tarafından oluşturulan önceden var olan yakalama örneklerini etkilemeden CDC yakalama örneklerini yönetmek için ön ek tabanlı bir adlandırma kuralı kullanır.

Lakeflow yakalama birimi adlandırma

Lakeflow Connect aşağıdaki adlandırma desenini kullanarak yakalama örnekleri oluşturur ve yönetir:

  • lakeflow_<schema>_<table>_1
  • lakeflow_<schema>_<table>_2

Lakeflow Connect yalnızca bu adlandırma düzeniyle eşleşen yakalama örneklerini yönetir. Farklı adlara sahip önceden var olan yakalama örnekleri korunur ve Lakeflow işlemlerinden etkilenmez.

Uyarı

Yardımcı program betik sürümlerinin 1.4'ten önceki versiyonlarında, Lakeflow Connect New_ ön ekini yakalama örnekleri (örneğin, New_schema_table_1) için kullanıyordu. Önceki bir sürümden yükseltme yapıyorsanız, lakeflow_ adlandırma kuralına geçmek için güncelleştirilmiş yardımcı program betiğini çalıştırın. Betik, geçiş sırasında mevcut New_ön ekli yakalama örnekleriyle geriye dönük uyumluluğu otomatik olarak işler.

Örnek slot gereksinimlerini belirleme

SQL Server, tablo başına en fazla 2 yakalama örneğine izin verir. Lakeflow Connect'in CDC ile çalışması için:

  • Lakeflow'un kendi lakeflow_ ön ekli örneğini oluşturabilmesi için iki yakalama örneği yuvasından en az birinin kullanılabilir durumda olması gerekir.
  • Her iki yuva da Lakeflow dışındaki yakalama örnekleri tarafından zaten meşgulse, Lakeflow Connect kendi yakalama örneğini oluşturup yönetemez. Lakeflow önceden var olan bir yakalama örneğinden okuyasa da, tam yenileme veya şema geliştirme işlemleri gerçekleştiremez.

Tavsiye

Her iki yakalama örneği yuvası da doluysa, bunun yerine değişiklik izlemeyi kullanın veya artık gerekli değilse mevcut yakalama örneklerinden birini kaldırın.

Diğer CDC tüketicileriyle birlikte yaşama

Lakeflow Connect, aynı tablodaki diğer CDC tüketicileriyle güvenli bir şekilde bir arada bulunabilir:

  • Önceden var olan yakalama örnekleri tüm Lakeflow işlemleri sırasında korunur (örneğin, tam yenileme ve şema evrimi).
  • Lakeflow yalnızca gerektiğinde kendi lakeflow_ ön ekli örneklerini bırakır ve yeniden oluşturur.
  • Lakeflow olmayan yakalama örneklerinden CDC verilerini kullanan diğer sistemler kesintisiz çalışmaya devam eder.

Lakeflow yakalama örneklerini yeniden oluşturan işlemler:

Aşağıdaki işlemler Lakeflow'un lakeflow_ önekli yakalama örneklerini bırakmasına ve yeniden oluşturmasına neden olur (ancak diğer yakalama örneklerini değil):

  • Tam yenileme işlemleri
  • Tablolara sütun ekleme (ADD COLUMN)

Örnek senaryo:

Bir tabloda önceden var olan bir yakalama örneği my_app_cdc adlı ise:

  1. Lakeflow Connect oluşturur lakeflow_schema_table_1.
  2. Her iki yakalama örneği de güvenli bir şekilde bir arada bulunur.
  3. Lakeflow tam yenileme veya şema evrimi gerçekleştirdiğinde, yalnızca öğesini yeniden oluşturur lakeflow_schema_table_1.
  4. Örnek my_app_cdc hiç dokunulmadan kalır ve diğer sistem için çalışmaya devam eder.

4. Adım: Ek izinler verme (gerekirse)

Bu adım, veri alma kullanıcısı için gerekli sistem ve tablo düzeyindeki izinleri sağlar. 2. ve 3. adımlar CT ve CDC'ye özgü izinler verirken, bu adım kullanıcının tüm gerekli SELECT izinlere sahip olmasını sağlar. Ayrıntılar için lakeflowFixPermissions'ye bakın. SQL Server yardımcı programı nesneleri komut dosyası referansı.

-- Grant system-level and table-level permissions
EXEC dbo.lakeflowFixPermissions
    @User = 'your_ingestion_user',
    @Tables = 'Sales.Orders,Production.Products,HR.Employees';

Alternatif seçenekler:

  • Tüm tablolar için: @Tables = 'ALL'
  • Yalnızca sistem izinleri: @Tables = NULL
  • Belirli şemalar: @Tables = 'SCHEMAS:Sales,HR'

Uyarı

2. ve 3. adımlardaki kurulum yordamları gerekli CT ve CDC izinlerini otomatik olarak verir, ancak ek tablo düzeyinde SELECT izinler vermek veya izinlerin iptal edilmesi için bu yordamı çalıştırmanız gerekebilir.

5. Adım: Kurulumu doğrulama

Değişiklik izleme ve CDC'nin veritabanınızda ve tablolarınızda düzgün yapılandırıldığını onaylamak için aşağıdaki sorguları çalıştırın:

-- Check Change Tracking status
SELECT
    d.name AS DatabaseName,
    ctd.is_auto_cleanup_on,
    ctd.retention_period,
    ctd.retention_period_units_desc
FROM sys.change_tracking_databases ctd
INNER JOIN sys.databases d ON ctd.database_id = d.database_id
WHERE d.name = DB_NAME();

-- Check tables with Change Tracking enabled
SELECT
    SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
    ct.is_track_columns_updated_on,
    ct.begin_version,
    ct.cleanup_version
FROM sys.change_tracking_tables ct
INNER JOIN sys.tables t ON ct.object_id = t.object_id;

-- Check CDC status
SELECT
    DB_NAME() AS DatabaseName,
    is_cdc_enabled
FROM sys.databases
WHERE database_id = DB_ID();

-- Check tables with CDC enabled
SELECT
    SCHEMA_NAME(t.schema_id) + '.' + t.name AS TableName,
    ct.capture_instance,
    ct.start_lsn,
    ct.create_date
FROM cdc.change_tables ct
INNER JOIN sys.tables t ON ct.source_object_id = t.object_id;

Yardımcı program nesnelerini yükseltme

Yükseltme, ilk kez yapılan kurulumda kullanılan aynı komut dosyasını kullanır. Adım 1: Yardımcı nesneleri yükleyin veya yükseltin; buna veri alımını duraklatmayı, kurulum yordamlarını yeniden çalıştırmayı ve veri alımını sürdürmeyi kapsayan (Yalnızca yükseltme için) olarak işaretlenmiş adımlar da dahildir.

Uyarı

Utility object script'in önceki sürümüne dönmek için Databricks Destek ile iletişime geçin.

Örnek: Karma yaklaşım

Uyarı

Bu örnekte kolaylık olması için tüm tablolarda CT ve CDC'yi etkinleştirmek için kullanılır 'ALL' . Üretim kullanımı için, belirli şemaları veya tabloları hedeflemek için bu sayfadaki yaygın senaryoları göz önünde bulundurun.

-- Step 1: Already completed (script installed)

-- Step 2 & 3: Enable both CT and CDC
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'ALL',
    @User = 'lakeflow_user',
    @Retention = '2 DAYS';

EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'ALL',
    @User = 'lakeflow_user';

-- Step 4: Grant all necessary permissions
EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'ALL';

Yaygın senaryolar

Senaryo 1: Yalnızca değişiklik izleme (belirli şemalar)

EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'SCHEMAS:Sales,Production',
    @User = 'lakeflow_user',
    @Retention = '2 DAYS';

EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'SCHEMAS:Sales,Production';

Senaryo 2: Yalnızca CDC (belirli tablolar)

EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords',
    @User = 'lakeflow_user';

EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'Staging.ImportData,Logs.AuditTrail,dbo.TempRecords';

Senaryo 3: Karma yaklaşım (bazı şemalar için CT, belirli tablolar için CDC)

-- Enable CT on transactional schemas
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'SCHEMAS:Sales,HR',
    @User = 'lakeflow_user',
    @Retention = '3 DAYS';

-- Enable CDC on specific staging tables without primary keys
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'Staging.ImportData,Logs.AuditTrail',
    @User = 'lakeflow_user';

-- Grant permissions on all tables
EXEC dbo.lakeflowFixPermissions
    @User = 'lakeflow_user',
    @Tables = 'ALL';

Ek kaynaklar