sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo activar correctamente una inserción en un servidor sql vinculado?

Realizar inserciones desde un activador en una tabla en el servidor vinculado:mala decisión. Esto tendrá un gran efecto en el rendimiento de la inserción en la tabla de origen ([dbo].[Table_1]) y también hay una transacción distribuida, y la configuración de servidores para admitir transacciones distribuidas - pesadilla.

Una posible solución es:

  1. En el servidor de origen, puede crear una tabla de colas de sincronización. Por ejemplo:

    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 en dbo.SourceTable puede insertar rápidamente en dbo.SyncQueue clave de registro que necesita sincronizar

  3. Algunos procedimientos almacenados realizados periódicamente pueden insertar registros de la tabla de cola en el servidor vinculado.