Предисловие


В данной статье будут разобраны полезные возможности 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)


  1. tsklab
    12.11.2016 01:59

    Бесплатная (Express) версия даже рядом не стояла от SSMS (бесплатной).


    1. jobgemws
      12.11.2016 12:02

      Я показал возможности бесплатной версии, SSMS так не может (по крайней мере пока)


  1. Listrigon
    12.11.2016 12:02
    +1

    Да, инструмент хороший, даже очень, но только полная нужная функциональность идет от Professional версии, стоимость которой $500, для большой фирмы или профи разработчика БД это может быть доступно и целесообразно, но вот для меня, как full stack индвидуального разработчика это недоступно. Конечно есть полная версия (кажется только для русской версии) под лицензией «Бесплатно для некоммерческого использования», но все же как-то не комильфо ее так использовать.


    1. jobgemws
      12.11.2016 12:02

      Я показал возможности бесплатной версии


      1. Listrigon
        12.11.2016 12:14

        Интересно, надо будет посмотреть получше, потому что Здесь написано, что «Schema Comparison Tool» и «Data Comparison Tool» в Express версии нет.


        1. jobgemws
          12.11.2016 12:17

          Я ломанные не качал-честно
          Просто нужно зарегистрироваться (это бесплатно) и получить установщик на почту


          1. Listrigon
            12.11.2016 12:30

            А как давно вы устанавливали и скачивали? Моу ошибаться, но не кажется, что было так, что Express весия 30 дней имеет полный функицоинал, а потом обрезается.
            Update: По ссылке скачать линк на dbForge Studio for SQL Server, v5.3 Enterprise. Так что есть предположение, что вы качаете не Express, а Express'ом она станет позже


            1. jobgemws
              12.11.2016 12:37

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


  1. jobgemws
    12.11.2016 12:17

    Я ломанные не качал-честно
    Просто нужно зарегистрироваться (это бесплатно) и получить установщик на почту


  1. AlanDenton
    12.11.2016 14:11
    +1

    Как бы критиковать пост не хотел изначально. Но все же зачем так явно пиарить?

    Из того с чем согласен… в этом туле нормальный форматтер, Intelligence и Index Manager. Схема компаратор сейчас сливает RedGate по скорости за счет частичного дескрайба в последнем + не всегда скрипты генерятся правильно (вместо ALTER часто таблица пересоздается — это актуально для 2014 версии сиквела). Дата компаратор хороший, но скрипты по синхронизации не всегда генерит оптимальные. Из-за чего работа в этом туле для админа на большой базе приятной явно не будет. Execution Plan хороший, но проигрывает во многом бесплатному PlanExplorer… скоро это в теории должно изменится с новым релизом. Производительность при работе с гридом где результаты запроса выводятся — это печаль надолго… из-за того что данные часто курсорами выгребаются из таблицы. InMemory, секционирование, компрессия и прочие интересные плюшкки поддержаны не полностью.

    Итого получается, что для чего-то серьезного этот тул ИМХО не подойдет. Лично мне удобнее связка SSMS+SSDT+плагины.


    1. jobgemws
      12.11.2016 16:42
      +1

      Я не пиарю, а просто поделился как я сравниваю расхождение баз данных по схемам и данным, а также как проверяю фрагментацию индексов. В принципе в основном только это и использую в dbForge.
      Также огромное спасибо, что указали подробно недостатки и преимущества данного продукта. На счет пересоздания таблицы-именно поэтому лучше сгенерировать код, а потом его проанализировать.


    1. whitebeast
      14.11.2016 15:32
      +1

      Полностью с вами согласен.
      Имхо, стандартный и наилучший набор для разработчика баз данных:
      1. SSMS
      2. Visual Studio + SSDT + BI
      3. Plan Explorer (и то с появлением SSMS 2016 лично я уже не вижу смысла в дополнительных тулах для просмотра планов выполнения)

      Все! :) Все, что нужно разработчику или администратору УЖЕ предоставлено ему Microsoft. И это все работает прекрасно и из коробки.


      1. jobgemws
        14.11.2016 15:33

        А как Вы проверяете синхронизацию моделей баз данных и сами данные между двумя экземплярами? dbForge в этом хорош


        1. whitebeast
          14.11.2016 16:11

          В Visual Studio создается Database Project (при наличии SSDT) и далее:
          image

          плюс в Visual Studio есть неплохие плагины для работы с репозиториями GIT и ему подобных, что очень упрощает версионизацию БД.


          1. jobgemws
            14.11.2016 17:09

            Возможно это решение и хорошее. Однако, когда в течении времени на разных экземплярах изменились модели и уже данные добавились. Быстрее всего сравнить данные-это dbForge. Модели я так тоже сравниваю. Особенно это хорошо, если стоит Express версия.


      1. AlanDenton
        14.11.2016 15:38
        +1

        Поддерживаю. Однако, Plan Explorer я бы не торопился списывать со счетов, потому что он хорош как раз в мелочах. То что показывает разницу между актуальным и ожидаемым планом выполнения, что можно «проиграть» выполнения запроса и увидеть на каком этапе был затык. Такого SSMS не умеет увы.

        Единственный минус, что он не является плагином который в SSMS можно встроить вместо стандартной закладки. Хотя знаю по некоторой инсайдерской информации, что скоро выйдет тул от ApexSQL с более крутым функционалом. Я его немного уже попробовал — шероховатости есть, но мне понравилось.


        1. whitebeast
          14.11.2016 16:15

          Согласен, но т.к. с недавних времен SSMS это отдельный продукт с своими отдельными от MS SQL обновлениями — то, я уверен, скоро нас ждет обновление и с таким фукнционалом.

          Хотя Plan Explorer'ом я пользуюсь достаточно редко. В основном хватает встроенного в SSMS функционала


  1. alexhott
    12.11.2016 20:55
    +1

    Пытался както делать синхронизацию баз размером до 100 гигабайт на разных серверах.
    В итоге после нескольких дней мучений со сравнением сделал полную перекачку таблиц и их замену на принимающем сервере. По времени даже быстрее получилось.
    Оптимизацию индексов делаю с помощью скрипта с хабра, стоит в джобе и пересобирает индексы.
    Хотя если бы у меня была подобная пргорамма то на первых порах проще было бы.