SQL Server araç nesneleri script başvurusu

SQL Server yardımcı program nesneleri betiği için bileşenler, parametreler ve sorun gidermeyi kapsayan başvuru malzemelerine erişim.

Genel Bakış

Sürüm tabanlı yardımcı araçlar saklı yordamları ve işlevlerini yükleyen betik, SQL Server veritabanınızı Lakeflow Connect'te alım için ayarlamanızı sağlar. Kurulum görevleri şunlardır:

  • İzin yönetimi
  • Değişiklik İzleme (CT) Kurulumu
  • Veri yakalama (CDC) kurulumunu değiştirme
  • Platform tespiti
  • Şema değişikliği izleme için DDL destek nesnesi oluşturma

Sürüm bilgileri

  • Güncel Sürüm: 1.7
  • Ana Sürüm: 1
  • Minör Versiyon: 7
  • Sürüm İşlevi: lakeflowUtilityVersion()

1.7 sürümünde ne yenilik var

Öne Çıkanlar

  • Şema evriminde veri kaybı hatasını düzeltir. Önceki sürümlerde, önceden var olan (Lakeflow olmayan) yakalama örneğine sahip bir tabloya sütun eklemek yeni sütunu olarak NULLalabilirdi. Bu durum düzeltilmiş ve birkaç ilgili şema evrim hatası (bkz. Hata düzeltmeleri).
  • DDL destek nesneleri artık değişiklik takibi için isteğe bağlı olarak sunulmuştur. DDL denetim tablosu ve tetikleyicisi artık otomatik şema evrimi için gerekli değildir ve varsayılan olarak kapalıdır. @CreateDdlSupportingObjects = 1 Sadece hâlâ istiyorsan takınlakeflowSetupChangeTracking.
  • Daha güvenilir şema evrimi. Kısıtlama değişiklikleri, kırılmaz olanlar, örneğin yabancı anahtarlar, gereksiz tam yenilemeleri tetiklememesi için sınıflandırılır.

Hata düzeltmeleri

  • Dinamik veri maskeleme, büyük harf duyarlı veya ikili derlemeler ve önceden var olan bir yakalama örneği olduğunda yeniden başlatma döngüsü veya kesintili alım gibi birkaç ADD COLUMN şema evrim hatasını düzeltti.
  • Varsayılan olmayan sunucu derleme ile veritabanlarında derleme çatışması hataları düzeltildi.
  • Varsayılan SET olmayan seçeneklerle bir oturumdan çalıştırıldığında başarısız olabilen DDL tetikleyicileri düzeltildi.
  • Ana veritabanından gerekli sunucu kapsamlı izinleri vermek için düzeltildi lakeflowFixPermissions .
  • Kaldırma (CLEANUP mod) düzeltildi, DDL tetikleyicileri engelleyebilecek ALTER TABLEyetim kaldı ve bu tetikleyiciler .

Diğer değişiklikler

  • Eklendi @AllowDisablePreExistingCaptureInstanceslakeflowSetupChangeDataCapture. Lakeflow 1 Connect'in bir tablonun önceden var olan (Lakeflow olmayan) CDC yakalama örneğini devralıp yönetmesine izin verecek şekilde ayarlayın, yerinde bırakmak yerine.

Temel bileşenler

Functions

lakeflowDetectPlatform()

SQL Server platform türünü algılar.

Şunu döndürür: 'AZURE_SQL_DATABASE', 'AZURE_SQL_MANAGED_INSTANCE', 'AMAZON_RDS', 'ON_PREMISES', veya 'UNKNOWN'

lakeflowUtilityVersion()

Yardımcı program nesnelerinin sürümünü algılar.

Dönüşler: '1.7'

Saklanan prosedürler

lakeflowFixPermissions

Alma işlemleri için kullanıcılara gerekli izinleri verir.

Parametreler:

Parametre Description
@User (NVARCHAR(128)) Gerekli. Yetki vermek için kullanıcı adı
@Tables (NVARCHAR(MAX)) Optional. Tablo düzeyinde izin kapsamını denetler

@Tables parametre seçenekleri:

Seçenek Description
NULL Yalnızca sistem düzeyinde izinler verme (varsayılan)
'ALL' Veritabanındaki tüm kullanıcı tablolarında izinler verme
'SCHEMAS:Schema1,Schema2' Verilen şemalardaki tüm tablolara izin ver
'Schema.Table1,Schema.Table2' Belirli tablolarda izin verme
Joker karakter desteği Örnek: 'Sales.*,HR.Employees'

Ne yapar:

  • Gerekli sistem görünümlerinde (SELECT, sys.objects, sys.tables, sys.columns vb.) verir.
  • Sistem saklı yordamlarında (EXECUTE, sp_tables, sp_columns_100) izin verir
  • İsteğe bağlı olarak parametresine göre kullanıcı tablolarında SELECT verir @Tables
  • Platforma özgü farklılıkları işler (Azure SQL Veritabanı, Yönetilen Örnek, RDS, Şirket içi)

lakeflowSetupChangeTracking

Veritabanı ve tablo seviyelerinde değişiklik izlemeyi etkinleştirir, isteğe bağlı DDL desteği (isteğe bağlı).

Parametreler:

Parametre Description
@Tables (NVARCHAR(MAX)) Optional. CT'yi etkinleştirmek için tablolar
@User (NVARCHAR(128)) Optional. Yetkilerin verileceği kullanıcı
@Retention (NVARCHAR(50)) Optional. CT saklama süresi (varsayılan: '2 DAYS')
@Mode (NVARCHAR(10)) Optional. 'INSTALL' (varsayılan) veya 'CLEANUP'
@CreateDdlSupportingObjects (BİR) Optional. Varsayılan 0. DDL denetim tablosunu oluşturmak ve şema değişimi (DDL) takibi için tetikleyici oluşturmak için ayarlandı 1 . Kurulum doğrulaması, bu değerin boru hattı yapılandırmanıza uymasını bekler. Değerler eşleşmiyorsa, kurulum doğrulaması hata raporu verir.

@Tables parametre seçenekleri:

Seçenek Description
NULL Sadece veritabanı düzeyinde CT kur, tablo etkinleştirme yok (ayrıca DDL destek nesneleri oluşturuyor )@CreateDdlSupportingObjects = 1
'ALL' Birincil anahtarlarla tüm kullanıcı tablolarında CT'yi etkinleştirme
'SCHEMAS:Schema1,Schema2' Belirtilen şemalardaki tablolarda CT'yi etkinleştirme
'Schema.Table1,Schema.Table2' Belirli tablolarda CT'yi etkinleştirme
Joker karakter desteği Örnek: 'Sales.*,HR.Employees'

Ne yapar:

  • Henüz etkinleştirilmemişse veritabanı düzeyinde değişiklik izlemeyi etkinleştirir
  • Ne @CreateDdlSupportingObjects = 1zaman , versiyonlu bir DDL denetim tablosu (lakeflowDdlAudit_1_7) oluşturur ve şema değişikliklerini yakalamak için bir tetikleyici oluşturur
  • Belirtilen tablolarda CT'ye olanak tanır (birincil anahtar içermeyen tabloları atlar)
  • Belirtilen kullanıcıya VIEW CHANGE TRACKING izinler verir.
  • CLEANUP modu: DDL destek nesnelerini kaldırır

Önemli davranışlar:

  • Birincil anahtar içermeyen tabloları otomatik olarak atlar (bunlar için CDC önerilir)
  • Akıllı bulma 'ALL' parametresiyle
  • Idempotent: Birden çok kez çalıştırmak güvenlidir

lakeflowSetupChangeDataCapture

DDL desteği ve yakalama örneği yönetimi ile veritabanı ve tablo düzeylerinde CDC'yi etkinleştirir.

Parametreler:

Parametre Description
@Tables (NVARCHAR(MAX)) Optional. CDC'yi etkinleştirmek için tablolar
@User (NVARCHAR(128)) Optional. Yetkilerin verileceği kullanıcı
@Mode (NVARCHAR(10)) Optional. 'INSTALL' (varsayılan) veya 'CLEANUP'
@AllowDisablePreExistingCaptureInstances (BİR) Optional. 0 (varsayılan) şema değişikliği işleme sırasında önceden var, Lakeflow olmayan yakalama örneklerini dokunulmadan bırakır. Lakeflow Connect'in önceden var olan yakalama örneklerini sahiplenip devre dışı bırakmasına izin verecek şekilde ayarlandı 1 .

@Tables parametre seçenekleri:

Seçenek Description
NULL Yalnızca veritabanı düzeyinde CDC ve DDL desteğini ayarlama
'ALL' Tüm kullanıcı tablolarında CDC'yi etkinleştirme
'SCHEMAS:Schema1,Schema2' Belirtilen şemalardaki tablolarda CDC'yi etkinleştirme
'Schema.Table1,Schema.Table2' Belirli tablolarda CDC'yi etkinleştirme

Ne yapar:

  • Henüz etkinleştirilmemişse, CDC'yi veritabanı düzeyinde etkinleştirir
  • Yakalama örneği izleme tablosu oluşturur (lakeflowCaptureInstanceInfo_1_7)
  • Yakalama örneği yönetimi için yardımcı yordamlar oluşturur:
    • lakeflowDisableOldCaptureInstance_1_7
    • lakeflowMergeCaptureInstances_1_7
    • lakeflowRefreshCaptureInstance_1_7
  • Otomatik şema değişikliği işleme için tetikleyici ALTER TABLE oluşturur
  • Belirtilen tablolarda CDC'yi etkinleştirir
  • Belirtilen kullanıcıya gerekli CDC izinlerini verir
  • CLEANUP modu: Tüm CDC DDL destek nesnelerini kaldırır

Önemli davranışlar:

  • Birincil anahtarı olan veya olmayan tablolarla çalışır
  • Şema değişikliklerinde yakalama örneği rotasyonunu otomatik olarak yönetir
  • Idempotent: Birden çok kez çalıştırmak güvenlidir

Platform desteği

  • Şirket içi SQL Server (EngineEdition 1-4)
  • Azure SQL Veritabanı (EngineEdition 5)
  • Azure SQL Yönetilen Örnek ("EngineEdition 8")
  • SQL Server için Amazon RDS (sunucu adı deseni tarafından algılandı)

Önkoşullar

  • Betiği yürüten kullanıcının db_owner rolüne üye olması gerekir
  • CT kurulumu için: Değişim takibi platformda mevcut olmalıdır
  • CDC kurulumu için: Değişiklik verisi kaydı platformda mevcut olmalıdır.

Yükleme yönergeleri

Betiği indirme ve çalıştırma

  1. Betiğin en son sürümünü indirin:

    utility_script.sql'ı indirin

  2. Betiği Çalıştırın:

    1. İndirilen betiği SQL Server Management Studio (SSMS), Azure Data Studio veya tercih ettiğiniz SQL istemcisinde açın.
    2. SQL Server örneğine bağlanın.
    3. Yardımcı program nesnelerini yüklemek istediğiniz hedef veritabanına bağlandığınızdan emin olun.
    4. Scripti çalıştırın.
  3. Yüklemeyi doğrulayın:

    -- Verify installation
    SELECT dbo.lakeflowUtilityVersion() AS UtilityVersion;
    SELECT dbo.lakeflowDetectPlatform() AS Platform;
    

Alternatif: Komut satırını kullanarak çalıştırma

Eğer sqlcmd kullanmayı tercih ediyorsanız:

sqlcmd -S YourServerName -d YourDatabase -E -i utility_script.sql

Uyarı

Yerine YourServerName ve YourDatabase değerlerini gerçek sunucu ve veritabanı adlarınızla değiştirin. Windows kimlik doğrulaması kullanmıyorsanız yerine -U username -P password kullanın-E.

Örnek: İzinleri düzeltme (yalnızca sistem)

-- Grant system permissions only
EXEC dbo.lakeflowFixPermissions
    @User = 'myuser';

Örnek: İzinleri düzeltme (tablo erişimiyle)

-- Grant system permissions plus access to all tables
EXEC dbo.lakeflowFixPermissions
    @User = 'myuser',
    @Tables = 'ALL';

-- Grant permissions for specific schemas
EXEC dbo.lakeflowFixPermissions
    @User = 'myuser',
    @Tables = 'SCHEMAS:Sales,HR,Production';

-- Grant permissions for specific tables
EXEC dbo.lakeflowFixPermissions
    @User = 'myuser',
    @Tables = 'Sales.Orders,HR.Employees';

Örnekler: Değişiklik takibi kurulumu

Yalnızca veritabanı düzeyinde

-- Setup CT infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = NULL,
    @User = 'myuser';

Tüm tablolarda etkinleştir

-- Enable CT on all user tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'ALL',
    @User = 'myuser';

Şema tabanlı kurulum

-- Enable CT on all tables in specific schemas
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'SCHEMAS:Sales,HR',
    @User = 'myuser',
    @Retention = '3 DAYS';

Belirli tablolar

-- Enable CT on specific tables
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'dbo.Table1,Sales.Orders,HR.Employees',
    @User = 'myuser';

DDL destek nesneleri oluştur

-- Enable CT and create the DDL audit table and trigger for schema-change capture
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'ALL',
    @User = 'myuser',
    @CreateDdlSupportingObjects = 1;

Örnekler: CDC kurulumu

Yalnızca veritabanı düzeyinde

-- Setup CDC infrastructure without enabling on tables
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = NULL,
    @User = 'myuser';

Tüm tablolarda etkinleştir

-- Enable CDC on all user tables
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'ALL',
    @User = 'myuser';

Belirli tablolar

-- Enable CDC on specific tables
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'dbo.Table1,Sales.Orders',
    @User = 'myuser';

Önceden var olan yakalama örneklerinin sahipliğini ele alın

-- Allow Lakeflow to disable pre-existing (non-Lakeflow) capture instances
-- during schema change handling
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'ALL',
    @User = 'myuser',
    @AllowDisablePreExistingCaptureInstances = 1;

Örnek: Karma yaklaşım

-- Step 1: Enable CT on tables with primary keys
EXEC dbo.lakeflowSetupChangeTracking
    @Tables = 'ALL',
    @User = 'myuser';

-- Step 2: Enable CDC on remaining tables (without primary keys)
EXEC dbo.lakeflowSetupChangeDataCapture
    @Tables = 'ALL',
    @User = 'myuser';

Örnek: Temizleme

-- Remove CT DDL support objects
EXEC dbo.lakeflowSetupChangeTracking
    @Mode = 'CLEANUP';

-- Remove CDC DDL support objects
EXEC dbo.lakeflowSetupChangeDataCapture
    @Mode = 'CLEANUP';

DDL destek nesneleri oluşturuldu

Değişiklik izleme veya CDC kullanmanıza bağlı olarak aşağıdaki DDL destek nesneleri oluşturulur.

Değişiklik izleme için

Nesne türü İsim Description
Tablo lakeflowDdlAudit_1_7 DDL değişiklik geçmişini depolar
Tetikleyici lakeflowDdlAuditTrigger_1_7 Olayları yakalar ALTER TABLE

CDC için

Nesne türü İsim Description
Tablo lakeflowCaptureInstanceInfo_1_7 Yakalamaları izler
Procedure lakeflowDisableOldCaptureInstance_1_7 Eski yakalama örneğini kaldırır
Procedure lakeflowMergeCaptureInstances_1_7 Örnekler arasındaki verileri birleştirir
Procedure lakeflowRefreshCaptureInstance_1_7 Yeni yakalama örneği oluşturur
Tetikleyici lakeflowAlterTableTrigger_1_7 Şema değişikliklerini işler

Değişiklik izleme sınırlamaları

  • Birincil anahtarlar gerektirir: Birincil anahtar içermeyen tablolar değişiklik izlemeyi kullanamaz.
  • Betik, PK'ları olmayan tabloları otomatik olarak atlar ve bunun yerine CDC kullanılmasını önerir.

Platforma özgü davranış

  • Azure SQL Veritabanı: Sistem saklı yordamlarına varsayılan olarak erişilebilir ( EXECUTE izin gerekmez).
  • Sunucu kapsamlı görünümler: sys.change_tracking_databases gibi görünümler için Azure SQL Veritabanı'nda sınırlı erişim.

Yükseltme süreci

Yükseltme için, utility object script'i tekrar çalıştırın, ardından kurulum prosedürlerini tekrar çalıştırın. Script, yardımcı işlevleri yeniden oluşturur ve önceki sürümlerden sadece eski replicant-prefix nesneleri kaldırır. Mevcut Lakeflow DDL destek nesnelerinizi yerinde bırakıyor, böylece mevcut DDL tetikleyicisi, kurulum prosedürlerini yeniden çalıştırana kadar şema değişikliklerini yakalamaya devam ediyor. Talimatlar için bkz. Adım 1: Yardımcı nesneleri kurulum veya yükseltme.

Yükseltme sırasında ne olur:

  • Script tarafından tanımlanan yardımcı fonksiyonlar ve kurulum prosedürleri bırakılır ve yeniden oluşturulur.
  • Önceki sürümlerden eski replicant-prefik nesneler kaldırılmıştır.
  • Mevcut Lakeflow DDL destek nesneleri (lakeflowDdlAudit_*, lakeflowDdlAuditTrigger_*, lakeflowCaptureInstanceInfo_*, ve ilgili prosedürler ile tetikleyiciler) yerinde bırakılır. Kurulum prosedürlerini yeniden çalıştırmak onları yeni sürüme geçirir. Yakalama örneği nesneleri, tekrar çalıştırdığınızda lakeflowSetupChangeDataCapturehareket eder. DDL denetim tablosu ve tetikleyici sadece tekrar çalıştırdığınızda lakeflowSetupChangeTracking@CreateDdlSupportingObjects = 1hareket eder çünkü bunlar isteğe bağlıdır.
  • Değişiklik izleme ve CDC tablolarınızda etkin kalır. Yükseltme bunları devre dışı bırakmaz.
  • CDC yakalama örnekleri yükseltme betiğinden etkilenmez.

Yükseltme betiğini çalıştırdıktan sonra, yeni sürüm için DDL destek nesnelerini yeniden oluşturmak için kurulum yordamlarını yeniden çalıştırın:

  • lakeflowSetupChangeTracking: ile @CreateDdlSupportingObjects = 1, DDL denetim tablosunu taşır ve tetikleyici ile ileriye doğru lakeflowDdlAudit_1_7. Kurulumunuz DDL şema değişimi yakalama kullanıyorsa (bir lakeflowDdlAudit tablosu var) veya nesneler eski sürümde kalıyorsa bu bayrağı geçirin.
  • lakeflowSetupChangeDataCapture: ile ilgili yordamları lakeflowCaptureInstanceInfo_1_7 ve tetikleyicileri yeniden oluşturur.

Her iki yordam da bir kez etkilidir ve özgün kurulum parametreleriyle yeniden çalıştırılması güvenlidir.

Uyarı

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

Sürüm oluşturma düzeni: objectName_majorVersion_minorVersion. Geçerli nesneler son eki _1_7 kullanır.

En iyi yöntemler

  • Her zaman db_owner veya eşdeğer ayrıcalıklara sahip bir kullanıcı olarak çalıştırın.
  • Önce üretim dışı veritabanlarında test edin.
  • Kapsamlı kapsam için karma yaklaşımı kullanın.
  • Düzgün kullanıcı erişimi sağlamak için kurulumdan sonra komutunu çalıştırın lakeflowFixPermissions .
  • Alma sıklığınıza göre saklama sürelerini göz önünde bulundurun.

Sorun giderme

"Bu betiği yürüten kullanıcı 'db_owner' rol üyesi değil"

Çözüm: db_owner rolüne sahip bir kullanıcı olarak çalıştır

"Değişiklik izleme katalogda etkin değil"

Çözüm: CT'yi veritabanı düzeyinde etkinleştirin veya yordamın otomatik olarak işlemesine izin verin

"Değişiklik veri yakalaması katalogda etkin değil"

Çözüm: CDC'yi veritabanı düzeyinde etkinleştirin veya yordamın bunu otomatik olarak işlemesine izin verin

Eksik birincil anahtarlar nedeniyle tablolar atlandı

Çözüm: Bunun yerine bu tablolar için kullanın lakeflowSetupChangeDataCapture

Doğrulama entegrasyonu

Aşağıdaki yardımcı program nesneleri Java doğrulama çerçevesi tarafından doğrulanır:

Nesne Description
SqlServerUtilityObjectsSetupValidator Yardımcı program nesnelerinin yüklenmesini doğrular
SqlServerChangeDataManagementSetupValidator CT/CDC kurulumunu doğrular
SqlServerDdlSupportObjectsSetupValidator DDL destek nesnelerini doğrular
SqlServerPermissionsSetupValidator İzinleri doğrular

Geçiş notları

Önceki DDL sürümlerinden (yardımcı program nesnelerinin başlangıcı öncesi dönemi) yükseltme yapıyorsanız:

  • Komut dosyası, eski nesneleri otomatik olarak temizler.
  • El ile temizleme gerekmez.
  • Sürüm 1.1 tüm işlevleri birleşik yordamlarda birleştirir.

Ek kaynaklar