Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak poprawnie uruchomić insert do połączonego serwera sql?

Wykonywanie wstawek z wyzwalacza do tabeli na serwerze połączonym - zła decyzja. Wpłynie to świetnie na wydajność wstawiania w tabeli źródłowej ([dbo].[Table_1]), a także istnieje transakcja rozproszona i konfiguracja serwerów do obsługi transakcji rozproszonych - koszmar.

Jednym z możliwych rozwiązań jest:

  1. Na serwerze źródłowym możesz utworzyć tabelę kolejek synchronizacji. Na przykład:

    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 na dbo.SourceTable może szybko wstawić do rekordu dbo.SyncQueue Klucz, który należy zsynchronizować

  3. Niektóre okresowo wykonywane procedury składowane mogą następnie wstawiać rekordy z kolejki do tabeli na połączonym serwerze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Irytujący wyjątek SQL, prawdopodobnie z powodu jakiegoś źle wykonanego kodu

  2. Czy mogę dodać funkcję zdefiniowaną przez użytkownika na poziomie serwera w SQL Server 2008 r2?

  3. Instrukcja INSERT kolidowała z ograniczeniem FOREIGN KEY

  4. DB_NAME() vs ORIGINAL_DB_NAME() w SQL Server:jaka jest różnica?

  5. scope_identity a ident_current