Есть ли способ автоматически создать сценарий в Azure SQL, содержащий инструкции по созданию для каждой таблицы в базе данных?

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

Я знаю, что могу сделать это вручную, создав сценарий отдельных таблиц из Server Management Studio и заставив сценарий добавлять их все в сценарий, но при наличии более 200 таблиц это займет очень много времени.

Есть ли простой способ сделать это?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, если вы не возражаете против того, чтобы это не было автоматизировано.

В SSMS щелкните правой кнопкой мыши базу данных в обозревателе объектов. Выберите опцию «Задачи/Создать сценарии...» и следуйте указаниям мастера.

Вы сможете выбрать, какие именно объекты будут заскриптованы и с какими параметрами.

Я успешно использовал это для переноса локальных схем базы данных SQL Azure.

Вывод можно сохранить в виде одного текстового файла, который при необходимости можно дополнительно изменить.

Вам не нужно указывать отдельные таблицы, хотя вы сможете изменить список таблиц (например, если у вас есть несколько таблиц, которые вы не хотите переносить).

Мне не удалось выбрать целевые типы «Azure DB», и в итоге я просто создал сценарий, совместимый с SQL2019, который выполнился без ошибок.

Как прокомментировал @testing-ma-lady: (i) генератор сценариев не заботится о последовательности зависимостей. Это особенно влияет на ссылки FK и означает, что записи, заполняющие таблицы зависимостей для объектов программирования (sp, fn и т. д.), не всегда присутствуют. (ii) Будьте очень осторожны, проверяя дополнительные настройки для типов сценариев, например, индексы не включены по умолчанию, и ваши подробные требования вряд ли будут точно соответствовать значениям по умолчанию.

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

Одна из проблем, на которую мне пришлось обратить внимание в этом сценарии, заключается в том, что такие вещи, как индексы, сжатие и т. д., записываются правильно (это можно настроить в меню «Инструменты» > «Параметры» перед запуском мастера). Во-вторых, таблицы создаются в правильном порядке зависимостей - возможно, с годами он улучшился, но было время, когда мне приходилось реорганизовывать вывод, чтобы родительские таблицы создавались раньше, чем ограничения внешнего ключа их дочерних таблиц, например, что неудача. Или что модули были созданы в правильном порядке, чтобы избежать отсутствия информации о зависимостях в метаданных новой базы данных.

testing-for-ya 20.06.2024 16:05

Спасибо, это не совсем то, что я имел в виду, поскольку запуск нельзя автоматизировать, но я могу с этим работать.

Garry_G 20.06.2024 17:21

Другие вопросы по теме