Скрипт всей базы данных SQL-Server

95

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

PositiveGuy
источник
6
Он пометил его как SQL Server 2008, так что я предполагаю, что он этим и пользуется.
Colin Mackay
1
Разве это не предполагает переход на serverfault.com?
Salamander

Ответы:

163

В Management Studio Щелкните правой кнопкой мыши свою базу данных. Задачи -> Создать скрипты.

Это должно сработать.

Крис Брандсма
источник
2
Другой вариант - использовать SQL SMO и
записать
Есть ли способ настроить скрипт для этого, чтобы настройки всегда были одинаковыми, независимо от того, кто его запускает? Я предвижу, что люди из нашей команды разработчиков каждый раз будут перезаписывать этот файл с разными настройками ...
Джо Филлипс,
@ Джо, я бы пошел по тому маршруту, о котором говорит RobS. У вас должно получиться сделать это с помощью PowerShell. В противном случае начните искать инструменты RedGate или Visual Studio Team Systems с Database Developer.
Крис Брандсма,
7
По умолчанию скрипт данных не выполняется. В разделе «Параметры таблицы / просмотра» выберите «Данные сценария -> Истина». Еще одна полезная опция - «Script Drop -> True»
Стивен Хоскинг
1
Сгенерированный сценарий не будет содержать никакой информации о сопоставлении столбцов, если вы не выбрали последний вариант в меню «Дополнительно»> «Параметры»> «Создание сценария». На немецком языке это вариант "Sortierung einschließen". Даже большинство из этих параметров включены в мастер создания сценария, а этот - нет (SQL Server 2008). Вам действительно нужно выбрать опцию перед вызовом мастера.
Olivier Faucheux,
14

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

Для генерации скриптов выполните:

schemazen.exe сценарий --server localhost --database db --scriptDir c: \ somedir

Затем для воссоздания базы данных из скриптов выполните:

schemazen.exe создать --server localhost --database db --scriptDir c: \ somedir
Сет Рино
источник
Привет, я хочу получить SQL QUERY из моей локальной базы данных, созданной в Visual Studio, как я могу это сделать с помощью этого инструмента? Я должен использовать направление файла .sdf или как? Спасибо.
Карло А. Лопес,
Это компактный файл базы данных SQL.
Карло А. Лопес
1
HOLY CRAP ЭТО БЫСТРЫЙ И УДИВИТЕЛЬНЫЙ.
ConstantineK
1
@hobs Я рад, что вы нашли это полезным. : D
Сет Рино
1
@SethReno испортил системные индексы на моем db = SMO не может ничего написать, ваш сценарий может, так что в основном я сэкономил массу времени, выполняя дерьмо вручную. Кстати, впечатляюще быстрая обратная инженерия всего, например, в 1000 раз быстрее, чем SSMS, и кажется быстрее, чем SMO сама по себе (не в последнюю очередь из-за времени запуска).
ConstantineK
4

Я написал для этой задачи утилиту SMOscript .

Генерация скриптов выполняется библиотекой SMO и поддерживает новые типы объектов в SQL 2005 и 2008.

девио
источник
Хм, я установил ваше приложение smo на свой 64-битный Vista. Установка прошла успешно, но я не вижу ни одного элемента в каталоге программ или в списке «Все программы»
PositiveGuy,
3

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

Зачем?

  • Нам необходимо поддерживать установку на SQL Server 2000, 2005 и 2008, и есть изменения в типах данных между версиями, например, 2005+ имеют nvarchar (max), тогда как 2000 поддерживает только ntext. Таким образом, наши сценарии используют токен и заменяют его на правильный тип на основе выбора базы данных.
  • Для выполнения некоторых сценариев требуется период ожидания после выполнения, например, мы обнаружили, что если вы не подождали несколько секунд после создания новой базы данных с помощью сценария, SQL Server иногда может давать сбой (потому что у него не было времени для создания базы данных. files), когда он перешел к созданию таблиц и т. д.
  • Мы хотели вести историю того, какие скрипты были выполнены и когда.
  • Мы хотели, чтобы наш установщик Wix MSI мог указывать строку подключения и учетные данные, и нам нужен был способ передать их в скрипты, поэтому еще раз, используя токены и некоторую условную логику.

Пример сценария (отредактировано для краткости)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO

USE [$Database$]
GO

IF '1'!='$IntegratedSecurity$'
BEGIN
    CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
    CREATE USER [$User$] FOR LOGIN [$Login$]
    EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO
si618
источник
1

Я рекомендую посмотреть на RedGate SQL packager. Это не бесплатно, но оказалось достаточно полезным, чтобы оправдать свою цену.

Барри Хёрт
источник
1

Просто взглянув на данные таблицы, чтобы вывести весь контент данных таблицы в Management Studio 2012 и 2014, он немного скрыт, но я нашел вариант после некоторого поиска:

  1. Щелкните правой кнопкой мыши db
  2. Выберите "Задачи"> "Создать сценарии ..."
  3. В "Set Scripting Options" нажмите "Advanced".
  4. В разделе "Общие" установите для параметра "Типы данных в сценарий" значение true (оно находится в нижней части группы "Общие").
Кэмерон Нападающий
источник
0

Если вам нужно сделать это программно, вы можете использовать библиотеку SQL DMO (OLE) против SQL Server 2000, но более вероятно, что вы можете захотеть использовать библиотеку SQL SMO (собственные библиотеки .NET) против SQL Server 2005 и более поздних версий.

Обе эти библиотеки являются неотъемлемой частью установки административных инструментов SQL Server.

Это в том случае, если генерации полного сценария базы данных из SQL Server Management Studio недостаточно.

полиглот
источник