У меня есть удаленная база данных, которую я хочу скопировать на свой локальный SQL Server.

ВАЖНО: мне нужны только образцы данных (например, 1 тыс. строк) из каждой таблицы, а существует около 130 различных таблиц.

Я пробовал использовать процедуру экспорта данных в SSMS. Проще говоря, я перехожу в ЗАДАЧИ> ЭКСПОРТ ДАННЫХ> ВЫБРАТЬ ИСТОЧНИК (удаленный БД)> ВЫБРАТЬ НАЗНАЧЕНИЕ (мой локальный БД)> ВЫБРАТЬ ТАБЛИЦЫ ДЛЯ КОПИРОВАНИЯ> КОПИРОВАТЬ

Что я пробовал:

Я попытался записать в этом инструменте SQL-запрос вроде

SELECT TOP 1000 * 
FROM TABLE1 GO ... 

SELECT TOP 1000 * 
FROM TABLE130

Но на этапе сопоставления он помещает каждый результат в одну таблицу вместо создания 130 различных таблиц вывода.

К вашему сведению, вышеуказанная процедура занимает 2 минуты для одного стола. Выполнение этого по одному для каждого стола займет 130 * 2 мин = 4 часа с половиной ... плюс это так скучно

У вас есть идеи, как разрешить эту ситуацию?

Спасибо! С уважением

0
stay_fun3 25 Июн 2020 в 14:52

1 ответ

Лучший ответ

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

Возможные подходы к извлечению всех данных или подмножества

  • Используйте SSIS., чтобы извлечь данные из исходной базы данных и загрузить в локальную базу данных.
  • Напишите собственное приложение, которое сделает эту работу. (Вы можете использовать Массовое копирование SQL)

Если вы просто не хотите делать это в SSMS, вы можете создать связанный сервер на локальном сервере с удаленным сервером.

Таким образом вы можете сделать что-то вроде этого, если таблицы или еще не созданы на вашем локальном сервере:

SELECT TOP 1000 *
INSERT INTO [dbo].Table1
FROM [yourLinkedServer].[dbo].[Table1]

Изменение таблицы INTO и таблицы FROM для каждой таблицы, которую вы хотите скопировать.

1
Preben Huybrechts 25 Июн 2020 в 13:17