Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como acionar corretamente uma inserção em um servidor sql vinculado?


Executar inserções de um gatilho em uma tabela no servidor vinculado - má decisão. Isso afetará muito o desempenho de inserção na tabela de origem ([dbo].[Tabela_1]) e também há uma transação distribuída e configuração de servidores para suportar transações distribuídas - pesadelo.

Uma possível solução é:

  1. No servidor de origem, você pode criar uma tabela de filas de sincronização. Por exemplo:
    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 em dbo.SourceTable pode inserir rapidamente em dbo.SyncQueue Record Key que você precisa sincronizar
  3. Alguns procedimentos armazenados executados periodicamente podem inserir registros da tabela de filas no servidor vinculado.