Сценарий вся база данных SQL-Server

В Target> Build Setting> поле Product name вы можете редактировать это поле здесь.

89
задан Christian 22 July 2009 в 00:24
поделиться

5 ответов

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

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

154
ответ дан 24 November 2019 в 07:17
поделиться

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

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

4
ответ дан 24 November 2019 в 07:17
поделиться

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

Почему?

  • Нам необходимо поддерживать установку на SQL Server 2000, 2005 и 2008, и между версиями есть изменения в типах данных, например, 2005+ имеют nvarchar (max), тогда как 2000 поддерживает только ntext. Таким образом, наши сценарии используют токен и на основе выбора базы данных заменяются на правильный тип.
  • Выполнение некоторых сценариев требует периода ожидания после выполнения, например, мы обнаружили, если вы не подождали несколько секунд после создания новой базы данных с помощью сценарий, SQL Server иногда может давать сбой (потому что у него не было времени для создания файлов db), когда он продолжал создавать таблицы и т. д.
  • Мы хотели сохранить историю того, какие скрипты были выполнены и когда.
  • Мы хотели разрешить нашему установщику 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
3
ответ дан 24 November 2019 в 07:17
поделиться

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

1
ответ дан 24 November 2019 в 07:17
поделиться

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

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

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

0
ответ дан 24 November 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: