Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come attivare correttamente un inserimento su un server sql collegato?

Esegui inserimenti da un trigger in una tabella sul server collegato - decisione sbagliata. Ciò influirà notevolmente sulle prestazioni di inserimento nella tabella di origine ([dbo].[Table_1]) e c'è anche una transazione distribuita e la configurazione dei server per supportare le transazioni distribuite - incubo.

Una possibile soluzione è:

  1. Sul server di origine è possibile creare una tabella della coda di sincronizzazione. Ad esempio:

    CREATE TABLE dbo.SyncQueue
    (
        QueueId INT IDENTITY(1,1),        
        KeyForSync INT, -- Primary key value of record in dbo.SourceTable
        SyncStatus INT  -- statuses can be: 0 - New, 1 - Synchronized, 2 - Error
    )
    
    suppose you source table is
    
    CREATE TABLE dbo.SourceTable
    (
            Key INT, -- primary key of the table
            Data varchar(xxx)
    )
    
  2. Triger su dbo.SourceTable può essere inserito rapidamente nel record dbo.SyncQueue Chiave che devi sincronizzare

  3. Alcune stored procedure eseguite periodicamente possono quindi inserire record dalla coda intable sul server collegato.