Предисловие
В данной статье будут разобраны полезные возможности dbForge, которые помогают в администрировании баз данных MS SQL Server. Также прошу заметить, что не все возможности будут разобраны.
Буду очень признателен, если в комментариях появятся альтернативные решения, а также дополнения к этой статье.
Возможности
Сначала рассмотрим синхронизацию баз данных (на панели «Синхронизация базы»):
1. Сравнение схем двух экземпляров баз данных (как на одном, так и на разных серверах):
Здесь необходимо указать источник и получателя. После этого сразу нажимаем кнопку «Сравнить»
1.1. Получаем результат сравнения:
Слева показывается, что у источника, а справа-что у получателя. Внизу показывается, что разное в базах данных. Также есть возможность галочками выбрать, что переносить к получателю. В результате сравнения вся схема делится на четыре блока:
— чего нет в получателе (ставя галочку, Вы помечаете объект на создание в получателе)
— что разное, но есть в обоих базах данных (ставя галочку, Вы помечаете изменения на перенос к получателю)
— что есть только в получателе (ставя галочку, Вы помечаете объект на удаление)
— что одинаковое
1.3. Сверху справа нажимаем кнопку «Синхронизировать»:
1.4. Здесь важно посмотреть все вкладки слева и в конце нажать кнопку «Начать». Также лучше выбрать «Открыть скрипт во внутреннем редакторе», а на вкладке «Опции» не создавать резервных копий
1.5. Созданный скрипт проанализировать и применить к базе или сразу к группе баз данных, где это необходимо
2. Сравнение данных двух экземпляров баз данных (как на одном, так и на разных серверах):
Здесь необходимо указать источник и получателя. После этого сразу нажимаем кнопку «Сравнить». Во вкладку «Соответствия» стоит заходить лишь тогда, когда у таблиц нет первичных ключей и нужно настроить соответствие, а также, чтобы не сравнивать все, а только указанные таблицы
2.1. В результате получаем, что отличается по таблицам вверху, а внизу-какие данные отличаются:
2.2. Далее нажимаем справа вверху кнопку «Синхронизировать»:
Здесь лучше выбрать «Открыть скрипт синхронизации во внутреннем редакторе», а на вкладке «Опции» убрать создания резервных копий. В конце нажать кнопку «Начать»
2.3. Созданный скрипт проанализировать и применить к базе или сразу к группе баз данных, где это необходимо
3. Теперь рассмотрим управление фрагментацией индексов (на панели «Администрирование»):
3.1. Здесь нужно указать сервер и базу данных:
3.2. После этого необходимо зайти в «Опции» и настроить режим оптимизации индексов:
3.3. Далее нажать на кнопку «ОК» и в списке индексов нажать кнопку «Проанализировать». Выделить нужные индексы и нажать кнопку «Исправить»:
3.4. В итоге опять будет выведен список тех индексов, у которых процент фрагментации и количество страниц выше, чем указано в настройках на вкладке «Опциях».
Результат
В данной статье были рассмотрены некоторые возможности dbForge для администрирования баз данных, которые позволяют сравнивать разные экземпляры баз данных по схемам и по данным. Что в свою очередь позволяет выявить проблемы с репликациями данных, а также проблемы с рассинхронизацией схем баз данных. Также всегда можно проверить и дефрагментировать нужные индексы при необходимости.
Источники:
» dbForge
Комментарии (18)
Listrigon
12.11.2016 12:02+1Да, инструмент хороший, даже очень, но только полная нужная функциональность идет от Professional версии, стоимость которой $500, для большой фирмы или профи разработчика БД это может быть доступно и целесообразно, но вот для меня, как full stack индвидуального разработчика это недоступно. Конечно есть полная версия (кажется только для русской версии) под лицензией «Бесплатно для некоммерческого использования», но все же как-то не комильфо ее так использовать.
jobgemws
12.11.2016 12:02Я показал возможности бесплатной версии
Listrigon
12.11.2016 12:14Интересно, надо будет посмотреть получше, потому что Здесь написано, что «Schema Comparison Tool» и «Data Comparison Tool» в Express версии нет.
jobgemws
12.11.2016 12:17Я ломанные не качал-честно
Просто нужно зарегистрироваться (это бесплатно) и получить установщик на почтуListrigon
12.11.2016 12:30А как давно вы устанавливали и скачивали? Моу ошибаться, но не кажется, что было так, что Express весия 30 дней имеет полный функицоинал, а потом обрезается.
Update: По ссылке скачать линк на dbForge Studio for SQL Server, v5.3 Enterprise. Так что есть предположение, что вы качаете не Express, а Express'ом она станет позжеjobgemws
12.11.2016 12:37я этим пользуюсь больше года и каждый раз обновляю, когда программа находит обновление
И да-у меня не полная версия, но вот эти возможности есть. И я ими пользуюсь часто
jobgemws
12.11.2016 12:17Я ломанные не качал-честно
Просто нужно зарегистрироваться (это бесплатно) и получить установщик на почту
AlanDenton
12.11.2016 14:11+1Как бы критиковать пост не хотел изначально. Но все же зачем так явно пиарить?
Из того с чем согласен… в этом туле нормальный форматтер, Intelligence и Index Manager. Схема компаратор сейчас сливает RedGate по скорости за счет частичного дескрайба в последнем + не всегда скрипты генерятся правильно (вместо ALTER часто таблица пересоздается — это актуально для 2014 версии сиквела). Дата компаратор хороший, но скрипты по синхронизации не всегда генерит оптимальные. Из-за чего работа в этом туле для админа на большой базе приятной явно не будет. Execution Plan хороший, но проигрывает во многом бесплатному PlanExplorer… скоро это в теории должно изменится с новым релизом. Производительность при работе с гридом где результаты запроса выводятся — это печаль надолго… из-за того что данные часто курсорами выгребаются из таблицы. InMemory, секционирование, компрессия и прочие интересные плюшкки поддержаны не полностью.
Итого получается, что для чего-то серьезного этот тул ИМХО не подойдет. Лично мне удобнее связка SSMS+SSDT+плагины.jobgemws
12.11.2016 16:42+1Я не пиарю, а просто поделился как я сравниваю расхождение баз данных по схемам и данным, а также как проверяю фрагментацию индексов. В принципе в основном только это и использую в dbForge.
Также огромное спасибо, что указали подробно недостатки и преимущества данного продукта. На счет пересоздания таблицы-именно поэтому лучше сгенерировать код, а потом его проанализировать.
whitebeast
14.11.2016 15:32+1Полностью с вами согласен.
Имхо, стандартный и наилучший набор для разработчика баз данных:
1. SSMS
2. Visual Studio + SSDT + BI
3. Plan Explorer (и то с появлением SSMS 2016 лично я уже не вижу смысла в дополнительных тулах для просмотра планов выполнения)
Все! :) Все, что нужно разработчику или администратору УЖЕ предоставлено ему Microsoft. И это все работает прекрасно и из коробки.jobgemws
14.11.2016 15:33А как Вы проверяете синхронизацию моделей баз данных и сами данные между двумя экземплярами? dbForge в этом хорош
whitebeast
14.11.2016 16:11В Visual Studio создается Database Project (при наличии SSDT) и далее:
плюс в Visual Studio есть неплохие плагины для работы с репозиториями GIT и ему подобных, что очень упрощает версионизацию БД.jobgemws
14.11.2016 17:09Возможно это решение и хорошее. Однако, когда в течении времени на разных экземплярах изменились модели и уже данные добавились. Быстрее всего сравнить данные-это dbForge. Модели я так тоже сравниваю. Особенно это хорошо, если стоит Express версия.
AlanDenton
14.11.2016 15:38+1Поддерживаю. Однако, Plan Explorer я бы не торопился списывать со счетов, потому что он хорош как раз в мелочах. То что показывает разницу между актуальным и ожидаемым планом выполнения, что можно «проиграть» выполнения запроса и увидеть на каком этапе был затык. Такого SSMS не умеет увы.
Единственный минус, что он не является плагином который в SSMS можно встроить вместо стандартной закладки. Хотя знаю по некоторой инсайдерской информации, что скоро выйдет тул от ApexSQL с более крутым функционалом. Я его немного уже попробовал — шероховатости есть, но мне понравилось.whitebeast
14.11.2016 16:15Согласен, но т.к. с недавних времен SSMS это отдельный продукт с своими отдельными от MS SQL обновлениями — то, я уверен, скоро нас ждет обновление и с таким фукнционалом.
Хотя Plan Explorer'ом я пользуюсь достаточно редко. В основном хватает встроенного в SSMS функционала
alexhott
12.11.2016 20:55+1Пытался както делать синхронизацию баз размером до 100 гигабайт на разных серверах.
В итоге после нескольких дней мучений со сравнением сделал полную перекачку таблиц и их замену на принимающем сервере. По времени даже быстрее получилось.
Оптимизацию индексов делаю с помощью скрипта с хабра, стоит в джобе и пересобирает индексы.
Хотя если бы у меня была подобная пргорамма то на первых порах проще было бы.
tsklab
Бесплатная (Express) версия даже рядом не стояла от SSMS (бесплатной).
jobgemws
Я показал возможности бесплатной версии, SSMS так не может (по крайней мере пока)