Мастер импорта SQL Server - возможно ли предоставить источник запроса и отфильтровать существующие записи в месте назначения? - PullRequest
1 голос
/ 03 июля 2019

Мне нужно импортировать 500 000 записей из источника базы данных на другой сервер с помощью мастера, поскольку мастер импорта использует массовую вставку.Я хочу предоставить исходный запрос с фильтром, чтобы проверить, существует ли запись в месте назначения.

Возможно ли это?Какой лучший способ сделать это?

enter image description here

1 Ответ

0 голосов
/ 03 июля 2019

Да, это должно быть выполнимо, если обе базы данных находятся на одном сервере или серверы связаны .

Вы можете проверить это, запустив запрос, который вы пытаетесь ввести здесь в качестве источника, непосредственно в SSMS в исходной базе данных и посмотрите, работает ли он (возможно, ограниченный TOP 100 или чем-то еще).

Если связанные серверы не доступны, обратитесь к SQL Server Integration Services. С помощью SSIS вы можете создать поток данных (фактически мастер импорта и экспорта создает очень простой пакет служб SSIS). Как может выглядеть ваш поток данных, довольно хорошо описано в ответах на этот вопрос . Особенно, если это повторяющаяся задача, может быть полезно сохранить ее в пакете служб SSIS, который затем можно будет запускать по требованию или планировать выполнение в агенте SQL Server.

Если SSIS также не подходит, рассмотрите возможность разделения передачи данных на два этапа, когда вы сначала перенесете все строки из источника в место назначения в промежуточную таблицу, а затем скопируйте из промежуточной таблицы в таблицу назначения то, что вам нужно на основе на фильтре. Однако это может сильно повлиять на производительность, пропускную способность и дисковое пространство и является наименее элегантным решением.

...