Aracılığıyla paylaş


Çoğaltma için yabancı anahtar kısıtlamalarını devre dışı bırakma

Şunlar için geçerlidir: SQL Server 2016 (13.x) and later versions Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL database in Microsoft Fabric

SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da çoğaltma için yabancı anahtar kısıtlamalarını devre dışı bırakabilirsiniz. Sql Server'ın önceki bir sürümünden veri yayımlıyorsanız bu yararlı olabilir.

Note

Tablo çoğaltma kullanılarak yayımlanırsa, çoğaltma aracıları tarafından gerçekleştirilen işlemler için yabancı anahtar kısıtlamaları otomatik olarak devre dışı bırakılır. Çoğaltma İçin Değil seçeneği, yabancı anahtar ve denetim kısıtlamaları için varsayılan olarak belirtilir; kısıtlamalar kullanıcı işlemleri için uygulanır, ancak ajan işlemleri için uygulanmaz. Bir çoğaltma aracısı abonede ekleme, güncelleştirme veya silme işlemi gerçekleştirdiğinde kısıtlama işaretlenmez; Kullanıcı ekleme, güncelleştirme veya silme işlemi gerçekleştirirse kısıtlama denetleniyor. Kısıtlama, veriler ilk eklendiğinde, güncelleştirildiğinde veya silindiğinde Publisher'da zaten denetlendiğinden çoğaltma aracısı için devre dışı bırakılır.

İzinleri

Tabloda ALTER izni gerektirir.

SQL Server Management Studio kullanma

Çoğaltma için yabancı anahtar kısıtlamasını devre dışı bırakmak için

  1. Nesne Gezgini, tabloyu değiştirmek istediğiniz yabancı anahtar kısıtlamasıyla genişletin ve sonra Anahtarlar klasörünü genişletin.

  2. Yabancı anahtar kısıtlamasına sağ tıklayın ve Değiştiröğesini seçin.

  3. Yabancı Anahtar İlişkileri iletişim kutusunda, Çoğaltma İçin Zorlaiçin Yok değerini seçin.

  4. Kapat'ıseçin.

Transact-SQL kullanma

Çoğaltma için yabancı anahtar kısıtlamasını devre dışı bırakmak için

  1. Transact-SQL'de bu görevi gerçekleştirmek için yabancı anahtar kısıtlamasını betikleyin. Nesne Gezgini, tabloyu değiştirmek istediğiniz yabancı anahtar kısıtlamasıyla genişletin ve sonra Anahtarlar klasörünü genişletin.

  2. Yabancı anahtar kısıtlamasına sağ tıklayın, Script Key As seçeneğini belirleyin, ardından DROP and CREATE To'yu seçin ve Yeni Sorgu Düzenleyici Penceresi'ni seçin. Elde edilen betik, AdventureWorks2025 örnek veritabanındaki aşağıdaki örneğe benzer görünmelidir:

    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    DROP CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory]  WITH CHECK 
    ADD CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID] 
    FOREIGN KEY([BusinessEntityID])
    REFERENCES [Sales].[SalesPerson] ([BusinessEntityID]);
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    CHECK CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    
  3. Betiğin ALTER TABLE ... ADD CONSTRAINT bölümünde yeni yabancı anahtar kısıtlamasını değiştirin ve ÇOĞALTMA İçİn DEĞİl seçeneğini belirtin. Örneğin:

    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    DROP CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory]  WITH CHECK 
    ADD CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID] 
    FOREIGN KEY([BusinessEntityID]) 
    REFERENCES [Sales].[SalesPerson] ([BusinessEntityID]) 
    NOT FOR REPLICATION; --added to disable constraint for replication
    GO
    
    ALTER TABLE [Sales].[SalesTerritoryHistory] 
    CHECK CONSTRAINT [FK_SalesTerritoryHistory_SalesPerson_BusinessEntityID]
    GO
    

Sonraki Adımlar