La dichiarazione SELECT...INTO [new_table_name]
supporta un massimo di 2 prefissi: [database].[schema].[table]
NOTA: è più performante di tirare i dati attraverso il collegamento mediante SELECT INTO
vs Spingendolo attraverso INSERT INTO
:
SELECT INTO
viene registrato in modo minimo.
SELECT INTO
non avvia in modo implicito una transazione distribuita, in genere.
In genere dico al punto 2, perché nella maggior parte degli scenari una transazione distribuita non viene creata implicitamente quando si utilizza SELECT INTO
. Se una traccia di profiler indica che SQL Server sta ancora creando implicitamente una transazione distribuita, è possibile eseguire prima una tabella temporanea SELECT INTO
per impedire la transazione implicita distribuita, quindi spostare i dati nella tabella di destinazione dalla tabella temporanea.
push vs. Pull Esempio
In questo esempio stiamo copiando i dati da [Server_A] a [server_b] attraverso un collegamento.Questo esempio presuppone esecuzione di query è possibile da entrambi server:
push
Invece di connessione a [Server_A] e spingono i dati [server_b]:
INSERT INTO [server_b].[database].[schema].[table]
SELECT * FROM [database].[schema].[table]
Pull
Connetti a [server_b] e carica i dati da [server_a]:
SELECT * INTO [database].[schema].[table]
FROM [server_a].[database].[schema].[table]
Il collegamento è interrotto. – ketura
grazie, link revisionato – richaux