Bagikan melalui


Menonaktifkan batasan kunci asing untuk replikasi

Berlaku untuk: SQL Server 2016 (13.x) dan yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)

Anda dapat menonaktifkan batasan kunci asing untuk replikasi di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Ini dapat berguna jika Anda menerbitkan data dari versi SQL Server sebelumnya.

Catatan

Jika tabel diterbitkan menggunakan replikasi, batasan kunci asing secara otomatis dinonaktifkan untuk operasi yang dilakukan oleh agen replikasi. Opsi NOT FOR REPLICATION ditentukan secara default untuk batasan kunci asing dan memeriksa batasan; batasan diberlakukan untuk operasi pengguna tetapi bukan operasi agen. Saat agen replikasi melakukan penyisipan, pembaruan, atau penghapusan pada Pelanggan, batasan tidak diperiksa; jika pengguna melakukan penyisipan, pembaruan, atau penghapusan, batasan dicentang. Batasan dinonaktifkan untuk agen replikasi karena batasan sudah diperiksa di Publisher ketika data awalnya dimasukkan, diperbarui, atau dihapus.

Izin

Memerlukan izin UBAH pada tabel.

Menggunakan SQL Server Management Studio

Untuk menonaktifkan batasan kunci asing untuk replikasi

  1. Di Object Explorer, perluas tabel dengan batasan kunci asing yang ingin Anda ubah, lalu perluas folder Kunci .

  2. Klik kanan batasan kunci asing lalu pilih Ubah.

  3. Dalam kotak dialog Hubungan Kunci Asing, pilih nilai Tidak untuk Diberlakukan Untuk Replikasi.

  4. Pilih Tutup.

Menggunakan Transact-SQL

Untuk menonaktifkan batasan kunci asing untuk replikasi

  1. Untuk melakukan tugas ini di Transact-SQL, buat skrip batasan kunci asing. Di Object Explorer, perluas tabel dengan batasan kunci asing yang ingin Anda ubah, lalu perluas folder Kunci .

  2. Klik kanan batasan kunci asing, pilih Kunci Skrip Sebagai, lalu pilih DROP dan BUAT Ke, lalu pilih Jendela Editor Kueri Baru. Skrip yang dihasilkan akan terlihat mirip dengan contoh berikut dari AdventureWorks2022 database sampel:

    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. ALTER TABLE ... ADD CONSTRAINT Di bagian skrip, ubah batasan kunci asing baru dan tentukan opsi NOT FOR REPLICATION. Contohnya:

    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
    

Langkah berikutnya