У меня есть существующая база данных в Azure, которую мне нужно реплицировать в другую базу данных Azure как внешние таблицы. Для этого мне нужно написать скрипт, который создаст все эти 200+ таблиц. Я ищу способ автоматического создания сценария создания таблиц для всех этих таблиц, чтобы я мог изменить его, чтобы создать новые внешние таблицы в другой базе данных.
Я знаю, что могу сделать это вручную, создав сценарий отдельных таблиц из Server Management Studio и заставив сценарий добавлять их все в сценарий, но при наличии более 200 таблиц это займет очень много времени.
Есть ли простой способ сделать это?





Да, если вы не возражаете против того, чтобы это не было автоматизировано.
В SSMS щелкните правой кнопкой мыши базу данных в обозревателе объектов. Выберите опцию «Задачи/Создать сценарии...» и следуйте указаниям мастера.
Вы сможете выбрать, какие именно объекты будут заскриптованы и с какими параметрами.
Я успешно использовал это для переноса локальных схем базы данных SQL Azure.
Вывод можно сохранить в виде одного текстового файла, который при необходимости можно дополнительно изменить.
Вам не нужно указывать отдельные таблицы, хотя вы сможете изменить список таблиц (например, если у вас есть несколько таблиц, которые вы не хотите переносить).
Мне не удалось выбрать целевые типы «Azure DB», и в итоге я просто создал сценарий, совместимый с SQL2019, который выполнился без ошибок.
Как прокомментировал @testing-ma-lady: (i) генератор сценариев не заботится о последовательности зависимостей. Это особенно влияет на ссылки FK и означает, что записи, заполняющие таблицы зависимостей для объектов программирования (sp, fn и т. д.), не всегда присутствуют. (ii) Будьте очень осторожны, проверяя дополнительные настройки для типов сценариев, например, индексы не включены по умолчанию, и ваши подробные требования вряд ли будут точно соответствовать значениям по умолчанию.
Для автоматизации можно использовать экспорт sqlpackage, который сгенерирует файл BACPAC. Это составной сжатый файл, который обычно также включает в себя содержимое данных, но вы можете экспортировать его из базы данных шаблона или открыть и удалить содержимое данных из архива. прежде чем повторно заархивировать его.
Спасибо, это не совсем то, что я имел в виду, поскольку запуск нельзя автоматизировать, но я могу с этим работать.
Одна из проблем, на которую мне пришлось обратить внимание в этом сценарии, заключается в том, что такие вещи, как индексы, сжатие и т. д., записываются правильно (это можно настроить в меню «Инструменты» > «Параметры» перед запуском мастера). Во-вторых, таблицы создаются в правильном порядке зависимостей - возможно, с годами он улучшился, но было время, когда мне приходилось реорганизовывать вывод, чтобы родительские таблицы создавались раньше, чем ограничения внешнего ключа их дочерних таблиц, например, что неудача. Или что модули были созданы в правильном порядке, чтобы избежать отсутствия информации о зависимостях в метаданных новой базы данных.