Каждый раз, когда речь заходит о шаблонах SQL Server Management Studio (SSMS), я неизбежно слышу вопрос: «Как организовать обмен шаблонами с другими участниками моей группы или между ноутбуками и тестовыми серверами?»

Компания Microsoft не упрощает эту задачу. Папка шаблонов спрятана в глубине папки C:\Users на каждом сервере и рабочей станции с установленной SSMS. Точнее, она расположена по адресу: C:\Users\\AppData\Roaming\Microsoft\SQL Server Management Studio\\Templates.

Кроме того, AppData — системная папка, которая скрыта, если не указано иное в параметрах папок в «Проводнике» Windows. Но даже тогда папка Templates не будет создана, пока вы не обратитесь к обозревателю шаблонов в SSMS в первый раз.

Пришло время наконец разобраться с этой темой, как для того, чтобы доходчиво объяснять ее слушателям на семинарах, так и в интересах моей собственной группы. За последние семь-восемь лет я приложил немало усилий, чтобы составить набор шаблонов, и в самом деле устал использовать флеш-накопители или Dropbox для синхронизации своих рабочих станций.

При обсуждении данной темы большинство моих собеседников неизбежно вспоминают о Dropbox и OneDrive. Однако каждый из названных инструментов синхронизирует только собственную папку (или любые вложенные папки в иерархии). Поскольку нельзя изменить местоположение папки шаблонов как настраиваемого пути в SSMS, даже в vNext, насколько мне удалось выяснить, в моем распоряжении осталось хорошее «недостающее звено» — приложение достаточно компактное и способное работать с SSMS, позволяющее заполнить пробел между путем C:\Users…\Templates и Dropbox или OneDrive. Работая над этим решением, я воспользовался бесплатной версией приложения, именуемого Allway Sync (file:///C:/Users/timf/Dropbox/Authoring/SQLMag/2017_03/Syncing%20Templates/allwaysync.com/), и Dropbox. У меня есть бесплатная версия OneDrive, но несколько лет назад я согласился заплатить за версию Dropbox Pro, установил ее на всех своих ноутбуках и использую ежедневно. В конечном итоге я перейду на OneDrive, поскольку это продукт Microsoft, интегрированный в современные версии Office и все поддерживаемые версии и редакции операционной системы Windows. Поэтому данный вариант несколько более приемлем при синхронизации с тестовыми компьютерами, на которых используется SSMS в производственных целях при работе через VPN-подключения, а не Dropbox.

Я заметил одну особенность при выборе инструмента, который собирался использовать для синхронизации папки Templates с Dropbox: в зависимости от инструмента происходил сбой обозревателя шаблонов, если соответствующий файл помещался в синхронизируемую папку шаблонов. Я предпринял первую попытку с использованием инструмента SyncToy (https://www.microsoft.com/en-US/download/details.aspx? id=15155) производства Microsoft. Однако из-за файла, помещенного в исходную папку для синхронизации, обозреватель шаблонов выдавал ошибку исключения и не показывал никаких папок шаблонов.

Теперь, после объяснения причин, побудивших меня выбрать решение SSMS — Allway Sync — Dropbox, рассмотрим настройки, необходимые для того, чтобы адаптировать его для вашей группы.

Настройка SSMS для синхронизации с Dropbox/OneDrive

В первую очередь нужно отметить, что я не рекомендую синхронизировать все вложенные папки в папке Templates. Компания Microsoft выпускает разнообразные шаблоны для SSMS. Я предпочитаю создать папку для всех своих шаблонов, не смешивая их с шаблонами Microsoft. В данном случае была создана вложенная папка с именем Sync Templates в папке Templates. Я не собираюсь подробно разбирать различия между созданием шаблонов в обозревателе шаблонов SSMS и в приложении «Проводник Windows» и сравнивать достоинства и недостатки этих подходов. Я уже написал две статьи для желающих познакомиться с особенностями шаблонов в SSMS. Кстати, думаю, что их следует обязательно прочитать, прежде чем переходить к данной статье («Обозреватель шаблонов в среде SSMS», Windows IT Pro/RE № 9 за 2016 год, и «Обозреватель шаблонов SQL Server Management Studio», № 1 за 2017 год).

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

Процесс формирования архитектуры синхронизации прост, он выглядит следующим образом.

1. Загрузите Allway Sync из https://allwaysync.com/.

Вы получите приглашение сохранить или выполнить исполняемый файл установки. Вам потребуется повторить установку на каждой синхронизируемой рабочей станции, поэтому выберите «Сохранить». Загруженный файл скопируйте в папку по своему выбору в Dropbox/OneDrive, чтобы иметь доступ к нему везде, где планируется выполнить установку. Процесс установки стандартный: «нажмите-далее-нажмите-далее-готово».

2. Создайте необходимые исходную и целевую папки.

Упрощая себе задачу, я сопоставляю диск папке Template, чтобы не запоминать полный путь и тем более не вводить его с клавиатуры. Обозначение Z:\, которое вы видите на снимках экрана в данной статье, сопоставляется с C:\Users\\AppData\Roaming\Microsoft\SQL Server Management Studio\\Templates\sql. Я создаю новую папку с именем Sync Templates (вы можете создать ее непосредственно из SSMS или обозревателя шаблонов или в «Проводнике Windows»). Кроме того, я создаю соответствующую папку Sync Templates в корневом каталоге Dropbox, так как эта корневая папка всегда является общедоступной, независимо от параметра Selective Sync на уровне рабочей станции в Dropbox.

3. Запустите Allway Sync.

Вы увидите окно, напоминающее изображенное на экране 1 (я уже создал задание, а после сообразил, что предварительно не сделал снимка экрана).

 

Окно приложения Allway Sync
Экран 1. Окно приложения Allway Sync

4. Настройка задания, основные действия.

  • Имя задания: Push Templates to Cloud («Перемещение шаблонов в «облако»»).
  • Левый путь синхронизации: Z:\Sync Templates.
  • Правый путь синхронизации: C:\Users\\Dropbox\Sync Templates.
  • Путь синхронизации (изображение стрелки с меткой Change) по умолчанию двунаправленный. Оставьте без изменений.

5. Углубленная настройка задания.

Пришло время для более тонкой настройки синхронизации содержимого этих папок. В Allway Sync выберите Job («Задание»), затем Properties («Свойства») из меню или щелкните правой кнопкой мыши вкладку задания и выберите Properties из всплывающего меню. Появится форма параметров. Нас интересует лишь две области этой формы: Synchronization Rules («Правила синхронизации») и Automatic Synchronization («Авто­матическая синхронизация»). Под именем задания выберите Synchronization Rules и убедитесь, что заданные параметры соответствуют показанным на экране 2.

 

Правила синхронизации
Экран 2. Правила синхронизации

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

Затем выберите Automatic Synchronization и убедитесь, что заданы параметры, показанные на экране 3.

 

Настройка автоматической синхронизации
Экран 3. Настройка автоматической синхронизации

Таким образом обеспечивается синхронизация изменений практически в реальном времени. Если вы хотите внести задержку, то можете сделать это.

6. Запуск.

Нажмите кнопку Analyze в главной форме Allway Sync, чтобы выполнить начальный анализ. Не удивляйтесь, если получите предупреждение о многочисленности синхронизируемых изменений. Этого следует ожидать при первом запуске задания. Затем нажмите кнопку Synchronize, и все остальное произойдет без вашего участия.

Настройка дополнительных рабочих станций/ноутбуков

На данном этапе вы можете синхронизировать папку, отличную от Dropbox или OneDrive, с Dropbox или OneDrive. Теперь благодаря набору функций Dropbox или OneDrive ваша папка Sync Templates реплицируется на любую рабочую станцию, на которой задействованы возможности этого инструмента. Необходимо повторить описанные в данной статье действия на других рабочих станциях, чтобы реплицировать изменения между Dropbox или OneDrive и их папками Templates.

  1. Установите Allway Sync, запустите и создайте задание.
  2. Добавьте нужные папки для синхронизации.
  3. Измените параметры Synchroni­zation Rules и Automatic Synchroni­zation.
  4. Выполните анализ и синхронизацию.

На свой страх и риск

Существуют другие инструменты, которые работают так же успешно, как Allway Sync, но я остановил свой выбор на этой программе. Результаты могут быть различными, и перед вами могут открываться другие перспективы. Как всегда, проявляйте предельную осторожность при установке нового инструмента на любой рабочей станции и особенно на сервере. Помните, вы отвечаете за последствия! Завершив настройку (менее чем за 10 минут для обоих ноутбуков), я смог создать шаблон с именем Work Template на своем рабочем ноутбуке и шаблон Personal Template на личном ноутбуке. Обе папки Template принимают вид, как на экране 4, почти сразу же через VPN и в двух разных беспроводных сетях.

 

Шаблоны для синхронизации
Экран 4. Шаблоны для синхронизации

Бонусная синхронизация

Мне часто приходится иметь дело с разными версиями SSMS, установленными, например, на ноутбуке и тестовой виртуальной машине. Одно из достоинств Allway Sync заключается в том, что возможности инструмента расширяются, позволяя синхронизировать более двух папок. На экране 5 я добавил еще одну папку, указывающую на диск Y:, сопоставленный установленному экземпляру SSMS 2016 (Z: сопоставлен моему экземпляру SSMS 2014).

 

Синхронизация в две папки
Экран 5. Синхронизация в две папки

После добавления папки синхронизации достаточно выполнить еще один цикл анализа и синхронизации, и три папки будут синхронизированы.

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