Существует ли альтернатива RedGate для "бедняков" для сценариев всей схемы базы данных?
Я нахожусь в ситуации, когда мне нужно было бы создать сценарий для базы данных, который я мог бы запустить на другом сервере, и получить базу данных, идентичную исходной, но без каких-либо данных. По сути, я хочу закончить большим сценарием создания, который захватывает схему базы данных.
Я работаю в среде, в которой установлен SQL Server 2000, и я не могу установить клиентские инструменты 2005 года (в случае, если они помогут). Я не могу позволить себе RedGate, но я действительно хотел бы иметь базу данных с идентичной схемой на другом сервере.
Какие-либо предложения? Будем весьма благодарны за любые простые.exe (не требующие установки) инструменты, советы или приемы T-SQL.
Обновление: база данных, с которой я работаю, имеет более 200 таблиц и несколько взаимосвязей и ограничений по внешнему ключу, поэтому создание сценариев вручную для каждой таблицы и вставка сценария не является приемлемым вариантом. Я ищу что-то лучше, чем это ручное решение
Дополнительное обновление Если я полностью что-то упустил, это не жизнеспособное решение с использованием инструментов SQL 2000. Когда я выбираю вариант для создания сценария создания в базе данных. Я заканчиваю сценарием, который содержит команду CREATE DATABASE и не создает ни один из объектов - таблиц, ограничений и т. Д. Студия управления SQL 2005 может также обрабатывать объекты, но база данных находится в среде, где нет для меня способ подключить установку Management Studio к нему.
10 ответов
Запустите SQL Server Management Studio, щелкните правой кнопкой мыши базу данных и выберите Script Database as > Create to > file
Это для SQL Server 2005. SQL Server 2000 Enterprise Manager имеет аналогичную команду. Просто щелкните правой кнопкой мыши на базе данных > All Tasks > Generate Scripts
,
РЕДАКТИРОВАТЬ: В SQL Server 2005 вы можете выбрать "База данных" на панели обозревателя объектов и выбрать несколько баз данных на панели сведений. Затем щелкните правой кнопкой мыши по вашему выбору и "Сценарий базы данных как> Создать в> файл". Это приведет к тому, что все они будут помещены в один скрипт, и он будет включать все таблицы, ключи, хранимые процедуры и ограничения.
Итак, я предполагаю, что вы не можете установить SQL Server Management Studio. Даже не бесплатная версия. Если это одноразовая вещь, я бы установил инструменты красных ворот. Пробная версия полностью функциональна в течение 14 дней. Сделай свою работу, затем удали. Вы также можете проверить http://www.xsqlsoftware.com/, они имеют функции, аналогичные Red Gate. Если ваша база данных мала, то у них есть бесплатная опция для вас. Мне также нравится http://www.apexsql.com/. Используйте пробную версию одного из них, а затем повторите попытку, чтобы убедить своего босса купить его.
В дополнение к приведенным выше ответам я хотел бы предложить, чтобы (по крайней мере, для будущих проектов) у вас не было мастерства проектирования базы данных в самой базе данных.
Один из способов достижения этого - либо просто поддерживать свои таблицы базы данных, процедуры и т. Д. В качестве сценариев "СОЗДАТЬ" с первого дня, и разработать основной сценарий, который объединит все отдельные сценарии для развертывания в базе данных по вашему выбору.
Более сложное решение состоит в том, чтобы использовать что-то вроде Visual Studio Database Edition (возможно, слишком дорогое, если ваши комментарии будут чем-то полезным), которое позволяет вам рассматривать каждый объект базы данных как узел в проекте, в то же время позволяя все это быть развернут с помощью нескольких кликов.
Объяснение обоих этих вариантов слишком упрощено, так как существует множество других проблем - управление версиями, миграция данных и т. Д. - но основной принцип тот же.
После того как вы извлекли свой сценарий - используя один из других ответов - вы можете рассмотреть возможность использования этого сценария в качестве основы для своего "мастера".
Просто держите "дизайн" вне базы данных - это чисто для "реализаций".
Попробуйте представить процесс похожим на разработку кода - исходный код и двоичные файлы хранятся отдельно, а последний генерируется из первого.
Если это одноразовая операция, и вы не хотите заказывать объектные сценарии самостоятельно, просто загрузите бесплатную пробную версию RedGate SQL Compare.
Это 14-дневная полная рабочая версия, поэтому она сделает всю работу за вас - это вполне законное решение. И у вас будут все сценарии для будущего использования с вашими сценариями вручную. В любом случае, я уверен, что если вы узнаете, насколько удобный инструмент, вы купите его на более позднем этапе, и именно на это они, вероятно, надеются, предлагая полностью работающую пробную версию. Это как-то сработало в моем случае.
Просто имейте в виду, что, как только пробная версия истекает, она затрагивает все инструменты, поэтому убедитесь, что используете ее максимально эффективно.
Я использовал эту программу из CodeProject много раз успешно. Он не только создает сценарий для схемы, но может (дополнительно) создавать сценарии для всех операторов INSERT, которые вам понадобятся для воссоздания базы данных.
Я использовал его против SQL Server 2000 в прошлом. Очевидно, что если у вас есть миллион строк в таблице, это может быть плохой идеей для сценариев содержимого, но на самом деле это действительно аккуратный инструмент для создания серии сценариев SQL для репликации базы данных.
Майкл Лэнг, когда вы щелкаете правой кнопкой мыши по базе данных и выбираете создать скрипт, есть несколько опций, которые вам нужно будет щелкнуть, чтобы все было сгенерировано. 2005 год намного проще в этом отношении, но 2000 может сделать это, вам просто нужно выбрать правильные варианты.
Как вы упомянули в SQL Server 2000, команда для использования:
В Enterprise Manager выберите базу данных, для которой вы хотите создавать сценарии, а затем щелкните правой кнопкой мыши и выберите Все задачи -> Создать сценарии SQL...
На панели параметров удобно выбрать опцию Создать один файл на объект таким образом, чтобы вы могли хранить каждый объект в системе контроля версий отдельно.
Поэтому, когда вы делаете какие-либо обновления для таблицы A, вы можете проверить это в системе контроля версий, чтобы другие знали, что вы работаете с ней, и после того, как вы закончите, вы можете написать сценарий для этого единственного объекта и сохранить его.
Чтобы создать сценарий для одного объекта, вы можете выбрать опцию Все задачи -> Создать сценарии SQL... и затем выбрать только этот один объект.
Единственная проблема с этим подходом - когда вы хотите восстановить полную базу данных, вам нужно позаботиться о зависимых объектах в том смысле, что объекты верхнего уровня должны быть восстановлены прежде, чем те, которые зависят от них.
По иронии судьбы, когда вы записываете всю базу данных в один файл, объекты упорядочиваются не по зависимости, а по дате создания. Это приводит к ошибкам при попытке использовать его для восстановления всей БД.
Мы закончили тем, что создали пакетный файл, который создавал бы каждый объект отдельно, вызывая "osql "
И это все работало довольно хорошо в то время
Теперь мы используем SQLCompare Pro, и это избавляет нас от каких- либо хлопот, но если вы не делаете релиз часто, вы можете жить без него.
Мастер публикации баз данных Microsoft (в Visual Studio 2008).
Если вы ищете версию для командной строки, Sql Server Hosting Toolkit работал для меня в прошлом.
Остальные верны, но для того, чтобы создать полную базу данных с нуля, вам нужно создать "устройство" в SQL, прежде чем запускать сценарии создания таблиц и процедур...
Используйте ADODB, так как почти каждый (если не каждый) Windows-блок имеет его для выполнения скрипта.
Черт, вы могли бы даже написать vbScript, который выполняется для построения всей вашей базы данных. Все доменные таблицы, которые у вас есть, вы должны помнить, чтобы включить идентификационную вставку, прежде чем добавлять элементы в БД.
Я открыт для обмена исходным кодом, если вам это нужно. Мне пришлось написать то же самое пару лет назад, и в итоге я получил 3 сценария, один из которых создавал устройство, затем таблицы, затем процедуры / триггеры и данные домена. Я написал код для разбора скрипта по умолчанию и позволения пользователю называть свою базу данных, логины и т. Д. Возможно, вам не придется заходить так далеко.
Надеюсь, это поможет вообще.