sql >> Databasteknik >  >> RDS >> Sqlserver

Hur utlöser man en infogning till en länkad sql-server korrekt?

Utför infogning från en utlösare till en tabell på länkad server - dåligt beslut. Detta kommer att ha stor inverkan på infogningsprestanda i källtabellen ([dbo].[Tabell_1]) och även det finns en distribuerad transaktion och konfigurering av servrar för att stödja distribuerade transaktioner - mardröm.

En möjlig lösning är:

  1. På källservern kan du skapa en synkroniseringskötabell. Till exempel:

    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. Trigger på dbo.SourceTable kan snabbt infoga i dbo.SyncQueue record Nyckel som du behöver synkronisera

  3. Någon periodiskt utförd lagrad procedur kan sedan infoga poster från kötabellen på den länkade servern.



  1. Mysql-täckning vs sammansatt vs kolumnindex

  2. Visa alltid decimaler i SQL?

  3. Varför använda främmande nycklar utan åtgärd vid radering eller uppdatering

  4. Hur kan jag vända på standardordningen i MySQL?