22 февраля 2012 г.

Развертывание SQL шаблонов

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

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

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

Различные версии SSMS используют различные папки для хранение шаблонов, к тому же эти папки могут отличаться в зависимости от версии операционной системы. С помощью поиска, я выяснил местоположение шаблонов на моем компьютере с Windows 7 и написал простой скрипт для развертывания шаблонов. Теперь когда у нас в проекте появляется новый разработчик, то ему достаточно выполнить пакетный файл и можно сразу приступить к программированию. Для копирования файлов я использовал xcopy.

Создайте текстовый файл в папке с пользовательскими шаблонами, скопируйте в него следующий скрипт и после сохранения файла, измените его расширение на .cmd. Выполните созданный пакетный файл и перезапустите SSMS для загрузки Ваших шаблонов в Templates Explorer.

ECHO OFF
COLOR 0C
CLS

SET MY_TEMPLATES=A1_MyTemplates_%DATE%

REM Templates Folder for Windows 7

REM SQL Server 2005
SET TARGET_FOLDER_90=C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\Templates\Sql\%MY_TEMPLATES%\

REM SQL Server 2008 or 2008 R2
SET TARGET_FOLDER_100=C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\Templates\Sql\%MY_TEMPLATES%\

REM SQL Server 2012
SET TARGET_FOLDER_110=C:\Users\%USERNAME%\AppData\Roaming\Microsoft\SQL Server Management Studio\11.0\Templates\Sql\%MY_TEMPLATES%\

ECHO SQL Server Version:
ECHO   1 - SQL Server 2005
ECHO   2 - SQL Server 2008 or 2008 R2
ECHO   3 - SQL Server 2012

SET /P MENU=Select a menu number:

IF %MENU%==1 SET TEMPLATES_LOCATION=%TARGET_FOLDER_90%
IF %MENU%==2 SET TEMPLATES_LOCATION=%TARGET_FOLDER_100%
IF %MENU%==3 SET TEMPLATES_LOCATION=%TARGET_FOLDER_110%

ECHO COPY TO %TEMPLATES_LOCATION%
XCOPY *.* "%TEMPLATES_LOCATION%" /Y /E

PAUSE

Теперь шаблоны без проблем развертываются на  компьютерах коллег, но каждый SQL шаблон имеет пару стандартных, информационных поля, которые требуется заполнять при каждом  использовании шаблона. Это как минимум имя и фамилия разработчика и дата создания скрипта.
-- =============================================
-- Author: <Author,,>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
Я бы хотел иметь возможность обновления этой информации во всех шаблонах за один раз. Например данные автора и дата создания скрипта, могли бы выглядеть после такого обновления, следующим образом:
-- =============================================
-- Author: <Author,,Вася Пупкин>
-- Create date: <Create Date,,2012-02-22>
-- Description: <Description,,>
-- =============================================
Думаю, разработка программы, которая ищет информационные поля во всех шаблонах и заполняет их пользовательскими данными, не займет много времени. Но я сейчас занят разработкой ExPEditor'а и хочу поскорее выпустить его первую версию.

Если кто-то напишет подобную программу для обновления шаблонов - сообщите мне! ☺

Комментариев нет:

Отправить комментарий