Подтвердить что ты не робот

Есть ли альтернатива RedGate для "бедного человека" для написания всей схемы базы данных?

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

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

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

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

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

4b9b3361

Ответ 1

Запустите SQL Server Management Studio, щелкните правой кнопкой мыши по базе данных и выберите Script Database as > Create to > file

Это для SQL Server 2005. SQL Server 2000 Enterprise Manager имеет аналогичную команду. Просто щелкните правой кнопкой мыши по базе данных > All Tasks > Generate Scripts.

EDIT: в SQL Server 2005 вы можете выбрать "База данных" в панели проводника объектов и выбрать несколько баз данных на панели сведений. Затем щелкните правой кнопкой мыши по вашему выбору и "Script База данных как > Создать в > файл". Это приведет к тому, что все они будут помещены в один script, и он будет содержать все таблицы, ключи, хранимые процедуры и ограничения.

Ответ 2

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

Ответ 3

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

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

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

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

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

Просто держите "дизайн" вне базы данных, что чисто для "реализаций".

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

Ответ 8

Как вы упомянули в SQL Server 2000, команда:

В Enterprise Manager выберите базу данных, из которой вы хотите script, а затем щелкните правой кнопкой мыши и выберите Все задачи → Сгенерировать SQL-скрипты...

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

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

В script для одного объекта вы можете использовать одну и ту же опцию Все задачи → Сгенерировать SQL-скрипты..., а затем выбрать только один объект.

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

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

Мы закончили создание командного файла, который создавал бы каждый объект, отдельно вызывающий "osql"

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

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

Ответ 9

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

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

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

Ответ 10

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

Используйте ADODB, так как почти каждый (если не каждый) ящик Windows установлен для выполнения script.

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

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

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