Поделиться через


Руководство. задать скрипты, выполняемые до или после развертывания

Скрипты, выполняемые перед развертыванием и после него, выполняют инструкции Transact-SQL до и после работы основного скрипта развертывания, который формируется на основе проекта базы данных. Скрипт, выполняемый перед развертыванием, не будет выполняться при обновлении целевых объектов из результатов сравнения схем в Visual Studio. В проекте может быть только один скрипт, выполняемый до развертывания, и один скрипт, выполняемый после развертывания. Эти скрипты можно использовать для разных целей. Пример:

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

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

IF (EXISTS(SELECT * FROM [dbo].[MyReferenceTable]))  
BEGIN  
    DELETE FROM [dbo].[MyReferenceTable]  
END  

Добавление и изменение скриптов, выполняемых перед развертыванием и после него

  1. В обозревателе решений разверните проект базы данных, чтобы открыть папку со скриптами.

  2. Щелкните правой кнопкой мыши папку Скрипты и выберите Добавить.

  3. В контекстном меню выберите команду «Скрипты».

  4. Выберите пункт «Скрипт, выполняемый перед развертыванием» или «Скрипт, выполняемый после развертывания». Также скрипту можно задать имя по своему усмотрению. Щелкните «Добавить», чтобы завершить операцию.

  5. Дважды щелкните файл в папке Скрипты.

    Откроется редактор Transact-SQL, в котором будет отображено содержимое файла.

В скриптах можно использовать синтаксис и переменные SQLCMD, которые задаются в свойствах проекта базы данных. Пример:

  • С помощью синтаксиса SQLCMD содержимое файла можно включить в скрипт, выполняемый перед развертыванием и после него. Файлы включаются в скрипт и выполняются в порядке их определения: :r .\myfile.sql

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

    :setvar TableName MyTable  
    SELECT * FROM [$(TableName)]  
    

Дополнительные сведения об использовании SQLCMD в скриптах см. в руководстве по настройке проектов баз данных.

См. также:

Разработка базы данных вне сети с учетом проекта