Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment bien déclencher une insertion vers un serveur sql lié ?

Effectuer des insertions à partir d'un déclencheur dans une table sur un serveur lié - mauvaise décision. Cela affectera grandement les performances d'insertion dans la table source ([dbo]. [Table_1]) et il existe également une transaction distribuée et la configuration des serveurs pour prendre en charge les transactions distribuées - cauchemar.

Une solution possible est :

  1. Sur le serveur source, vous pouvez créer une table de file d'attente de synchronisation. Par exemple :

    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. Le déclencheur sur dbo.SourceTable peut rapidement insérer dans la clé d'enregistrement dbo.SyncQueue que vous devez synchroniser

  3. Certaines procédures stockées exécutées périodiquement peuvent ensuite insérer des enregistrements de la file d'attente dans la table sur le serveur lié.