В предыдущей статье я писал о применении 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'а и хочу поскорее выпустить его первую версию.
Если кто-то напишет подобную программу для обновления шаблонов - сообщите мне! ☺