Есть ли & # 8220; бедняга & # 8221; альтернатива RedGate для сценариев из всей схемы базы данных? [закрыто]

StackOverflow https://stackoverflow.com/questions/169107

Вопрос

Я нахожусь в ситуации, когда мне нужно сгенерировать сценарий для базы данных, который я мог бы запустить на другом сервере и получить базу данных, идентичную исходной, но без каких-либо данных. По сути, я хочу закончить большим сценарием создания, который захватывает схему базы данных.

Я работаю в среде, в которой установлен SQL Server 2000, и я не могу установить клиентские инструменты 2005 года (если они могут помочь). Я не могу позволить себе RedGate, но я действительно хотел бы иметь базу данных с идентичной схемой на другом сервере.

Есть предложения? Будем весьма благодарны за любые простые .exe (не требующие установки) инструменты, советы или приемы T-SQL.

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

Дополнительное обновление . Если я что-то упустил полностью, это не является жизнеспособным решением с использованием инструментов SQL 2000. Когда я выбираю вариант для создания сценария создания в базе данных. Я заканчиваю сценарием, который содержит команду CREATE DATABASE и не создает ни один из объектов - таблиц, ограничений и т. Д. Студия управления SQL 2005 может также обрабатывать объекты, но база данных находится в среде, где нет способ подключения к нему установки Management Studio.

Это было полезно?

Решение

Запустите SQL Server Management Studio, щелкните правой кнопкой мыши базу данных и выберите База данных сценариев как > Создать в > файл

Это для SQL Server 2005. В SQL Server 2000 Enterprise Manager есть аналогичная команда. Просто щелкните правой кнопкой мыши базу данных > Все задачи > Создать сценарии .

РЕДАКТИРОВАТЬ: В SQL Server 2005 вы можете выбрать " База данных " в панели проводника объектов и выберите несколько баз данных в области сведений. Затем щелкните правой кнопкой мыши по вашему выбору и " База данных сценариев как > Создать в > файл & Quot ;. Это приведет к тому, что все они будут помещены в один скрипт, и он будет включать все таблицы, ключи, хранимые процедуры и ограничения.

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

Итак, я предполагаю, что вы не можете установить SQL Server Management Studio. Даже не бесплатная версия. Если это одноразовая вещь, я бы установил инструменты красных ворот. Пробная версия полностью функциональна в течение 14 дней. Сделай свою работу, затем удали. Вы также можете проверить http://www.xsqlsoftware.com/ , они имеют функции, аналогичные Red Gate. Если ваша база данных мала, то у них есть бесплатная опция для вас. Мне также нравится http://www.apexsql.com/ . Воспользуйтесь пробной версией одного из них, а затем повторите попытку, чтобы убедить своего босса купить его.

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

Один из способов достижения этого - либо просто поддерживать свои таблицы базы данных, процедуры и т. д. в качестве сценариев «CREATE» с первого дня, и разработать основной сценарий, который объединит все отдельные сценарии для развертывания в базе данных по вашему выбору. ,

Более сложное решение состоит в том, чтобы использовать что-то вроде Visual Studio Database Edition (возможно, слишком дорогое, если ваши комментарии будут чем-то интересным), которое позволяет вам рассматривать каждый объект базы данных как узел в проекте, в то же время позволяя полностью вещь, которая будет развернута несколькими щелчками мыши.

Объяснение обоих этих вариантов слишком упрощено, так как существует множество других проблем - управление версиями, миграция данных и т. д. - но основной принцип остается тем же.

После того, как вы извлекли свой сценарий - используя один из других ответов - вы можете рассмотреть возможность использования этого сценария в качестве основы для своего «мастера».

Просто держите «дизайн» вне базы данных - это чисто для «реализаций».

Попробуйте представить процесс похожим на разработку кода - исходный код и двоичные файлы хранятся отдельно, а последний генерируется из первого.

Я использовал эту программу из CodeProject много раз успешно. Он не только создает сценарий для схемы, но может (дополнительно) создавать сценарии для всех операторов INSERT, которые вам понадобятся для воссоздания базы данных.

Я использовал его против SQL Server 2000 в прошлом. Очевидно, что если у вас есть миллион строк в таблице, это может быть плохой идеей для составления сценария содержимого, но на самом деле это действительно хороший инструмент для создания серии сценариев SQL для репликации базы данных.

Если это одноразовая операция, и вы не хотите заказывать объектные сценарии самостоятельно, просто загрузите бесплатную пробную версию RedGate SQL Compare .

Это полная рабочая версия на 14 дней, поэтому она сделает всю работу за вас & # 8211; это абсолютно законное решение. И у вас будут все сценарии для будущего использования с вашими сценариями вручную. В любом случае, я уверен, что если вы узнаете, насколько удобный инструмент, вы купите его на более позднем этапе, и именно на это они, вероятно, надеются, предлагая полностью работающую пробную версию. Это как-то сработало в моем случае.

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

Майкл Ланг, когда вы щелкаете правой кнопкой мыши по базе данных и выбираете создание сценария, есть несколько полей параметров, которые вам нужно будет щелкнуть, чтобы все было сгенерировано. 2005 год намного проще в этом отношении, но 2000 может сделать это, вам просто нужно выбрать правильные параметры.

Если вы ищете версию командной строки, Sql Server Hosting Toolkit работал для меня в прошлом.

Мастер публикации баз данных Microsoft (в Visual Studio 2008).

Как вы упомянули в SQL Server 2000 , команда, которую нужно использовать:

Находясь в Enterprise Manager , выберите базу данных, для которой нужно создавать сценарии объектов, а затем нажмите правой кнопкой мыши и выберите Все задачи - > Создать сценарии SQL ...

На панели Параметры удобно выбрать параметр Создать один файл на объект , чтобы вы могли хранить каждый объект в системе контроля версий отдельно.

Итак, всякий раз, когда вы делаете какие-либо обновления для таблицы A, вы можете проверить это в системе контроля версий, чтобы другие знали, что вы работаете с ней, и после того, как вы закончите, вы можете написать сценарий для этого единственного объекта и сохранить его.

Чтобы создать сценарий для одного объекта, вы можете использовать тот же параметр Все задачи - > Создайте сценарии SQL ... , а затем выберите только этот один объект.

Единственная проблема с этим подходом - когда вы хотите восстановить полную базу данных, вам нужно позаботиться о зависимых объектах в том смысле, что объект верхнего уровня должен быть восстановлен прежде, чем объекты, зависящие от них.

По иронии судьбы, когда вы записываете всю базу данных в один файл, объекты упорядочиваются не по зависимости, а по дате создания. Это приводит к ошибкам при попытке использовать его для восстановления всей БД.

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

И все это работало довольно хорошо в то время

Теперь мы используем SQLCompare Pro , и это спасает нас от или это хлопотно, но если вы не делаете релиз часто, вы можете жить без него.

Остальные верны, но для создания полной базы данных с нуля вам нужно создать «устройство» в SQL, прежде чем запускать таблицы создания и сценарии процедур ...

Используйте ADODB, так как почти каждый (если не каждый) Windows-бокс имеет установленный для выполнения сценария.

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

Я открыт для обмена исходным кодом, если вам это нужно. Мне пришлось написать то же самое пару лет назад, и в итоге я получил 3 сценария, один из которых создавал устройство, затем таблицы, затем процедуры / триггеры и данные домена. Я написал код для синтаксического анализа сценария по умолчанию и разрешения пользователю называть свою собственную базу данных, а также логины и т. Д. Возможно, вам не придется заходить так далеко.

Надеюсь, это поможет вообще.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top