Script полная база данных SQL-Server

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

Ответ 1

Из Management Studio Щелкните правой кнопкой мыши по базе данных. Задачи → Сгенерировать скрипты.

Это должно сделать это.

Ответ 2

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

Для запуска запуска скриптов:

schemazen.exe script --server localhost --database db --scriptDir c:\somedir

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

schemazen.exe create --server localhost --database db --scriptDir c:\somedir

Ответ 3

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

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

Ответ 4

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

Почему?

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

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

-- 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

Ответ 5

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

Ответ 6

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

  • Щелкните правой кнопкой мыши db
  • Выберите "Задачи" > "Сгенерировать скрипты..."
  • В разделе "Установка параметров сценария" нажмите "Дополнительно"
  • В разделе "Общие" установите "Типы данных в script" в true (это находится в нижней части группы "Общие" )

Ответ 7

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

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

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