Обзор сравнения схем

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Средство сравнения схем позволяет сравнить два определения базы данных, где источник и цель сравнения могут быть любой комбинацией подключенной базы данных, проекта базы данных SQL или .dacpac файла. После завершения сравнения результаты сравнения отображаются как набор действий, которые делают целевой объект таким же, как источник, как и дифф. В интерфейсе сравнения схем можно напрямую обновить целевой объект (если целевой объект является проектом или базой данных) или создать скрипт обновления, который имеет тот же эффект.

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

Сравнение схем предоставляет следующие функции:

  • Сравнение схем между двумя DACPAC-файлами, базами данных или проектами SQL.
  • Просмотр результатов в виде набора действий, которые необходимо применить к целевому объекту, чтобы согласовать его с источником.
  • Выборочное исключение действий, представленных в результатах.
  • Установка параметров, определяющих область сравнения.
  • Примените изменения непосредственно к целевому объекту или создайте скрипт для применения изменений позже.
  • Сохранение результатов сравнения.

Функция

Различия между источником и целью представляются в виде сетки для удобства просмотра. Сравнение можно выполнить в любом направлении между моделью базы данных, производным от любого из следующих элементов:

  • подключенная база данных
  • Проект базы данных SQL
  • Файл .dacpac

Сравните схему и просмотрите каждую разницу в сетке результатов или в форме скрипта, где сведения об изменениях доступны на уровне строки. Вы также можете выборочно исключить определенные различия перед обновлением целевого объекта. Средства сравнения схем доступны в Visual Studio, Azure Data Studio и командной строке.

Параметры сравнения схем

Параметры сравнения схем извлекаются из параметров развертывания, доступных из библиотеки DacFx .NET. Вот какие параметры доступны:

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

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

Файлы сравнения схем

Определение сравнения для сравнения схем можно сохранить в виде .scmp файла, известного как файл сравнения схем. Этот файл хранит сведения о сравнении схем в XML и включает в себя:

  • сведения о источнике и целевом подключении
  • Параметры сравнения
  • исключенные типы объектов

Файл .scmp можно открыть в Visual Studio или Azure Data Studio, чтобы легко выполнить то же сравнение позже или поделиться сравнением с другими пользователями.

Запуск и использование сравнения схем

  1. В меню "Сервис" в Visual Studio выберите SQL Server и выберите "Создать сравнение схем".

    Также можно щелкнуть правой кнопкой мыши проект TradeDev в обозревателе решений и выбрать пункт Сравнение схем.

    Откроется окно Сравнение схем, и Visual Studio автоматически назначит сравнению имя, например SqlSchemaCompare1.

    Два раскрывающихся меню с зеленой стрелкой между ними отображаются непосредственно под панелью инструментов окна "Сравнение схем". Эти меню позволяют выбрать определения базы данных в качестве источника и цели сравнения.

  2. В раскрывающемся списке "Выбор источника " выберите "Выбрать источник ", а откроется диалоговое окно "Выбор исходной схемы ".

    Если вы открыли окно "Сравнение схем", щелкнув правой кнопкой мыши имя проекта, исходная схема уже заполнена, и вы можете перейти к шагу 4.

    Снимок экрана: диалоговое окно выбора источника сравнения схем в Visual Studio.

  3. Выполните выбор для источника сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Источником является определение базы данных, которое вы хотите использовать в качестве основы для изменений в целевом объекте.

  4. В раскрывающемся списке "Выбор целевого объекта" в окне сравнения схем выберите "Выбрать целевой объект" и откроется диалоговое окно "Выбор целевой схемы". Выполните выбор целевого объекта сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Цель — это определение базы данных, к которому необходимо оценить и потенциально применить изменения.

  5. Вы также можете выбрать кнопку "Параметры" на панели инструментов "Сравнение схем", чтобы указать, какие объекты сравниваются, какие типы различий игнорируются, а также другие параметры.

  6. Нажмите кнопку "Сравнить" на панели инструментов "Сравнение схем", чтобы запустить процесс сравнения.

    Когда сравнение будет завершено, структурные различия между проектом и базой данных отобразятся на панели Результаты в верхней части окна. По умолчанию в результатах сравнения все различия группируются по действию (удалить, изменить или добавить). На панели Результаты отображается строка для каждого объекта базы данных, который различается в двух определениях базы данных. Каждая строка идентифицирует объект в исходной или целевой схеме (или оба) и действие, которое будет выполняться в целевой схеме, чтобы сделать целевой объект таким же, как и исходный объект. Если объект был рефакторингован и переименован или перемещен в новую схему, исходные и целевые имена отличаются, а исходное имя отображается полужирным шрифтом, чтобы выделить разницу.

    Снимок экрана: интерфейс сравнения схем в Visual Studio, сравнивающий базу данных с проектом.

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

    Чтобы изменить порядок группирования, выберите раскрывающийся список Группировать результаты на панели инструментов. Выберите пункт Тип, чтобы сгруппировать результаты по типу объекта (например, по таблицам, представлениям или хранимым процедурам).

  7. По умолчанию все различия включаются в область действия «Обновить целевую схему». Можно исключить различия, которые не требуется синхронизировать. Для этого снимите флажок столбца Action в центре каждой строки. Кроме того, можно щелкнуть правой кнопкой мыши строку на панели "Схема" и выбрать пункт Исключить. Строка немедленно неактивна. Если для обновления целевой базы данных используется сравнение схем, эта строка не учитывается для каких-либо ожидающих изменений.

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

    Если исключенная строка содержит зависимые объекты (например, строка таблицы, на которую ссылается строка представления), исключенная строка отключена, но ее флажок не очищается. После отмены флажка всех строк, зависящих от нее, отключенная строка снята. Кроме того, если строка прошла рефакторинг (переименована или перемещена в другую схему), то флажок будет недоступен и для этой строки, и для всех зависимых дочерних строк.

    При обновлении сравнения эти различия, которые вы решили пропустить, игнорируются.

Чтобы обновить схему целевого объекта, у вас есть два варианта. Вы можете непосредственно обновить целевую схему в окне Сравнение схем, если целью является база данных или проект, или создать скрипт обновления, если целью является база данных или файл базы данных. Созданный скрипт появляется в редакторе Transact-SQL, где можно проверить выполнение скрипта в базе данных.

Сравнение графических схем пока недоступно в предварительной версии проектов SQL в стиле ПАКЕТА SDK в Visual Studio. Используйте Azure Data Studio для сравнения схем.

Примечание.

Сравнение схем недоступно в Visual Studio Code. Используйте Azure Data Studio или Visual Studio для сравнения схем.

  1. В Azure Data Studio в палитре команд (ctrl/cmd+shift+P) найдите и выберите "Сравнение схем".

    Кроме того, щелкните правой кнопкой мыши проект базы данных в представлении "Проекты баз данных" или базе данных в обозреватель объектов и выберите "Сравнение схем".

    Снимок экрана: пункт меню сравнения схем в обозревателе объектов Azure Data Studio.

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

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

  2. При выборе кнопки с многоточием для источника или целевого объекта откроется диалоговое окно, в котором можно обновить оба элемента. Выполните выбор для источника сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Источником является определение базы данных, которое вы хотите использовать в качестве основы для изменений в целевом объекте. Цель — это определение базы данных, к которому необходимо оценить и потенциально применить изменения.

    Снимок экрана: диалоговое окно выбора источника сравнения схем в Azure Data Studio.

    После завершения выбора нажмите кнопку "ОК ", чтобы закрыть диалоговое окно и вернуться в окно "Сравнение схем".

  3. Вы также можете выбрать кнопку "Параметры" на панели инструментов "Сравнение схем", чтобы указать, какие объекты сравниваются, какие типы различий игнорируются, а также другие параметры.

  4. Нажмите кнопку "Сравнить" на панели инструментов "Сравнение схем", чтобы запустить процесс сравнения.

    Когда сравнение будет завершено, структурные различия между проектом и базой данных отобразятся на панели Результаты в верхней части окна. По умолчанию в результатах сравнения все различия группируются по действию (удалить, изменить или добавить). На панели Результаты отображается строка для каждого объекта базы данных, который различается в двух определениях базы данных. Каждая строка определяет объект в исходной или целевой схеме и действие, которое нужно выполнить в целевой схеме, чтобы целевой объект стал идентичным исходному объекту. Если объект был рефакторингован и переименован или перемещен в новую схему, исходные и целевые имена отличаются, а имя источника отображается полужирным шрифтом, чтобы выделить разницу.

    Снимок экрана: интерфейс сравнения схем в Azure Data Studio, сравнивающий базу данных с проектом.

  5. По умолчанию все различия включаются в область действия «Обновить целевую схему». Можно исключить различия, которые не требуется синхронизировать. Для этого снимите флажок столбца Action в центре каждой строки. Кроме того, можно щелкнуть правой кнопкой мыши строку на панели "Схема" и выбрать пункт Исключить. Строка немедленно неактивна. Если для обновления целевой базы данных используется сравнение схем, эта строка не учитывается для каких-либо ожидающих изменений.

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

    Если исключенная строка содержит зависимые объекты (например, строка таблицы, на которую ссылается строка представления), исключенная строка отключена, но ее флажок не очищается. После того как будут сняты флажки у всех зависимых строк, флажок отключенной строки будет снят. Кроме того, если строка прошла рефакторинг (переименована или перемещена в другую схему), то флажок будет недоступен и для этой строки, и для всех зависимых дочерних строк.

    При обновлении сравнения эти различия, которые вы решили пропустить, будут игнорироваться.

Чтобы обновить схему целевого объекта, у вас есть два варианта. Целевой объект можно обновить непосредственно в окне "Сравнение схем" кнопкой "Применить ", если целевой объект является базой данных или проектом, или создать скрипт обновления, если целевой объект является базой данных с кнопкой "Создать скрипт ". Созданный скрипт появляется в редакторе Transact-SQL, где можно проверить выполнение скрипта в базе данных.

Для сравнения схем требуется графическое средство, например Visual Studio или Azure Data Studio.