Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
База данных SQL в предварительной версии Microsoft Fabric
Средство сравнения схем позволяет сравнить два определения базы данных, где источник и цель сравнения могут быть любой комбинацией подключенной базы данных, проекта базы данных SQL или .dacpac
файла. После завершения сравнения результаты сравнения отображаются как набор действий, которые делают целевой объект таким же, как источник. Различия между моделями базы данных представлены аналогичным образом, как и диффы системы управления версиями. Если целевой объект сравнения схем является проектом SQL или базой данных, можно обновить целевой объект непосредственно из интерфейса сравнения схем или создать скрипт обновления, который имеет тот же эффект.
Сравнение схем предоставляет следующие функции:
- Сравнивайте схемы между двумя
.dacpac
файлами, базами данных или проектами SQL. - Просмотр результатов в виде набора действий для сопоставления целевого объекта с источником.
- Выборочное исключение действий, представленных в результатах.
- Установка параметров, определяющих область сравнения.
- Примените изменения непосредственно к целевому объекту или создайте скрипт для применения изменений позже.
- Сохранение результатов сравнения.
Functionality
Различия между источником и целью представляются в виде сетки для удобства просмотра. Сравнение можно выполнить в любом направлении между моделью базы данных, производным от любого из следующих вариантов:
- connected database
- Проект базы данных SQL
- Файл
.dacpac
При сравнении схем, можно выполнить углубленный анализ и просмотреть каждую разницу в результирующей сетке или в виде скрипта, где сведения об изменениях доступны на уровне строки. Вы также можете выборочно исключить определенные различия перед обновлением целевого объекта. Средства сравнения схем доступны в Visual Studio, Azure Data Studio и командной строке.
Параметры сравнения схем
Параметры сравнения схем извлекаются из параметров развертывания, доступных из библиотеки DacFx .NET. Вот какие параметры доступны:
- ignore whitespace
- игнорировать схемы секционирования
- игнорировать порядок столбцов
- удалить индексы, отсутствующие в источнике
- блокировка возможной потери данных
Типы объектов, включенные в сравнение, также можно настроить. Эти объекты включают таблицы, хранимые процедуры, индексы, разрешения, определяемые пользователем типы и многое другое.
Файлы для сравнения схем
Определение сравнения для сравнения схем можно сохранить в виде .scmp
файла, известного как файл сравнения схем. Этот файл хранит сведения о сравнении схем в XML и включает в себя:
- сведения о источнике и целевом подключении
- comparison options
- исключенные типы объектов
Файл .scmp
можно открыть в Visual Studio или Azure Data Studio, чтобы легко выполнить то же сравнение позже или поделиться сравнением с другими пользователями.
Запуск и использование сравнения схем
В меню "Сервис" в Visual Studio выберите SQL Server и выберите "Создать сравнение схем".
Также можно щелкнуть правой кнопкой мыши проект TradeDev в обозревателе решений и выбрать пункт Сравнение схем.
Откроется окно Сравнение схем, и Visual Studio автоматически назначит сравнению имя, например
SqlSchemaCompare1
.Два раскрывающихся меню с зеленой стрелкой между ними отображаются непосредственно под панелью инструментов окна "Сравнение схем". Эти меню позволяют выбрать определения базы данных в качестве источника и цели сравнения.
В раскрывающемся списке "Выбор источника " выберите "Выбрать источник ", а откроется диалоговое окно "Выбор исходной схемы ".
Если вы открыли окно "Сравнение схем", щелкнув правой кнопкой мыши имя проекта, исходная схема уже заполнена, и вы можете перейти к шагу 4.
Выполните выбор для источника сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Источником является определение базы данных, которое вы хотите использовать в качестве основы для изменений в целевом объекте.
В раскрывающемся списке "Выбор целевого объекта" в окне сравнения схем выберите "Выбрать целевой объект" и откроется диалоговое окно "Выбор целевой схемы". Выполните выбор целевого объекта сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Цель — это определение базы данных, к которому необходимо оценить и потенциально применить изменения.
Вы также можете выбрать кнопку "Параметры" на панели инструментов "Сравнение схем", чтобы указать, какие объекты сравниваются, какие типы различий игнорируются, а также другие параметры.
Нажмите кнопку "Сравнить" на панели инструментов "Сравнение схем", чтобы запустить процесс сравнения.
Когда сравнение будет завершено, структурные различия между проектом и базой данных отобразятся на панели Результаты в верхней части окна. Результаты сравнения автоматически группируют все различия по действиям (например, «Удалить», «Изменить» или «Добавить»). На панели Результаты отображается строка для каждого объекта базы данных, который различается в двух определениях базы данных. Каждая строка идентифицирует объект в исходной или целевой схеме (или оба) и действие, которое будет выполняться в целевой схеме, чтобы сделать целевой объект таким же, как и исходный объект. Если объект был рефакторингован и переименован или перемещен в новую схему, исходные и целевые имена отличаются, а исходное имя отображается полужирным шрифтом, чтобы выделить разницу.
По умолчанию список результатов скрывает объекты, одинаковые в обеих схемах или не поддерживаемые для обновления (например, встроенные объекты). Чтобы показать эти объекты, вы можете выбрать соответствующие кнопки фильтров на панели инструментов.
Чтобы изменить порядок группирования, выберите раскрывающийся список Группировать результаты на панели инструментов. Выберите пункт Тип, чтобы сгруппировать результаты по типу объекта (например, по таблицам, представлениям или хранимым процедурам).
По умолчанию все различия включаются в область действия «Обновить целевую цель». Можно исключить различия, которые не требуется синхронизировать. Для этого снимите флажок столбца Action в центре каждой строки. Кроме того, можно щелкнуть правой кнопкой мыши строку на панели "Схема" и выбрать пункт Исключить. Строка немедленно становится серой. Если для обновления целевой базы данных используется сравнение схем, эта строка не рассматривается для каких-либо ожидающих изменений.
Также вы можете щелкнуть правой кнопкой мыши строку группы и выбрать пункт Исключить все или Включить все, что равносильно снятию или установке флажков для всех различий в данной группе. При группировке результатов по схеме правой кнопкой мыши в строке группы можно включить или исключить все изменения в определенной схеме.
Если исключенная строка содержит зависимые объекты (например, строка таблицы, на которую ссылается строка представления), исключенная строка отключена, но ее флажок не очищается. После того, как все зависимые от этой строки строки будут сняты, отключенная строка также будет снята. Кроме того, если строка прошла рефакторинг (переименована или перемещена в другую схему), то флажок будет недоступен и для этой строки, и для всех зависимых дочерних строк.
При обновлении сравнения эти различия, которые вы решили пропустить, игнорируются.
Чтобы обновить схему целевого объекта, у вас есть два варианта. Вы можете непосредственно обновить целевую схему в окне Сравнение схем, если целью является база данных или проект, или создать скрипт обновления, если целью является база данных или файл базы данных. Созданный скрипт появляется в редакторе Transact-SQL, где можно проверить выполнение скрипта в базе данных.
Note
Сравнение графических схем частично доступно в предварительной версии SQL-проектов в стиле SDK в Visual Studio. Сравнения схем доступны для подключенных баз данных и .dacpac
файлов, проекты базы данных SQL пока недоступны.
В меню "Сервис" в Visual Studio выберите SQL Server и выберите "Создать сравнение схем".
Также можно щелкнуть правой кнопкой мыши проект TradeDev в обозревателе решений и выбрать пункт Сравнение схем.
Откроется окно Сравнение схем, и Visual Studio автоматически назначит сравнению имя, например
SqlSchemaCompare1
.Два раскрывающихся меню с зеленой стрелкой между ними отображаются непосредственно под панелью инструментов окна "Сравнение схем". Эти меню позволяют выбрать определения базы данных в качестве источника и цели сравнения.
В раскрывающемся списке "Выбор источника " выберите "Выбрать источник ", а откроется диалоговое окно "Выбор исходной схемы ".
Если вы открыли окно "Сравнение схем", щелкнув правой кнопкой мыши имя проекта, исходная схема уже заполнена, и вы можете перейти к шагу 4.
Выполните выбор для источника сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Источником является определение базы данных, которое вы хотите использовать в качестве основы для изменений в целевом объекте.
В раскрывающемся списке "Выбор целевого объекта" в окне сравнения схем выберите "Выбрать целевой объект" и откроется диалоговое окно "Выбор целевой схемы". Выполните выбор целевого объекта сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Цель — это определение базы данных, к которому необходимо оценить и потенциально применить изменения.
Вы также можете выбрать кнопку "Параметры" на панели инструментов "Сравнение схем", чтобы указать, какие объекты сравниваются, какие типы различий игнорируются, а также другие параметры.
Нажмите кнопку "Сравнить" на панели инструментов "Сравнение схем", чтобы запустить процесс сравнения.
Когда сравнение будет завершено, структурные различия между проектом и базой данных отобразятся на панели Результаты в верхней части окна. По умолчанию в результатах сравнения все различия группируются по действию (удалить, изменить или добавить). На панели Результаты отображается строка для каждого объекта базы данных, который различается в двух определениях базы данных. Каждая строка идентифицирует объект в исходной или целевой схеме (или оба) и действие, которое будет выполняться в целевой схеме, чтобы сделать целевой объект таким же, как и исходный объект. Если объект был рефакторингован и переименован или перемещен в новую схему, исходные и целевые имена отличаются, а исходное имя отображается полужирным шрифтом, чтобы выделить разницу.
По умолчанию список результатов скрывает объекты, одинаковые в обеих схемах или не поддерживаемые для обновления (например, встроенные объекты). Чтобы показать эти объекты, вы можете выбрать соответствующие кнопки фильтров на панели инструментов.
Чтобы изменить порядок группирования, выберите раскрывающийся список Группировать результаты на панели инструментов. Выберите пункт Тип, чтобы сгруппировать результаты по типу объекта (например, по таблицам, представлениям или хранимым процедурам).
По умолчанию все различия включаются в область действия «Обновить целевую цель». Можно исключить различия, которые не требуется синхронизировать. Для этого снимите флажок столбца Action в центре каждой строки. Кроме того, можно щелкнуть правой кнопкой мыши строку на панели "Схема" и выбрать пункт Исключить. Строка немедленно становится серой. Если для обновления целевой базы данных используется сравнение схем, эта строка не рассматривается для каких-либо ожидающих изменений.
Также вы можете щелкнуть правой кнопкой мыши строку группы и выбрать пункт Исключить все или Включить все, что равносильно снятию или установке флажков для всех различий в данной группе. Если результаты сгруппированы по схеме, это действие позволяет быстро включить или исключить все изменения, относящиеся к определенной схеме.
Если исключенная строка содержит зависимые объекты (например, строка таблицы, на которую ссылается строка представления), исключенная строка отключена, но ее флажок не очищается. После того, как все зависимые от этой строки строки будут сняты, отключенная строка также будет снята. Кроме того, если строка прошла рефакторинг (переименована или перемещена в другую схему), то флажок будет недоступен и для этой строки, и для всех зависимых дочерних строк.
При обновлении сравнения эти различия, которые вы решили пропустить, игнорируются.
Чтобы обновить схему целевого объекта, у вас есть два варианта. Вы можете непосредственно обновить целевую схему в окне Сравнение схем, если целью является база данных или проект, или создать скрипт обновления, если целью является база данных или файл базы данных. Созданный скрипт появляется в редакторе Transact-SQL, где можно проверить выполнение скрипта в базе данных.
Дополнительные сведения о сравнении схем в Visual Studio Code см. в статье "Сравнение схем" (предварительная версия)
В Visual Studio Code в палитре команд (
ctrl/cmd+shift+P
) найдите и выберите MSSQL: Сравнение схем (предварительная версия).Кроме того, щелкните правой кнопкой мыши проект базы данных в представлении "Проекты баз данных" или базе данных в обозреватель объектов и выберите "Сравнение схем".
Откроется окно сравнения схем, а исходный или целевой объект может быть предустановлен на основе точки запуска.
Две кнопки с многоточием и стрелкой между ними отображаются непосредственно под панелью инструментов окна Schema Compare. Эти меню позволяют выбрать определения базы данных в качестве источника и цели сравнения.
При нажатии кнопки с многоточием для источника или целевого объекта открывается диалоговое окно, в котором можно обновить каждую из них. Выполните выбор для источника сравнения схем, выбрав проект, подключение к базе данных или DACPAC-файл . Источником является определение базы данных, которое вы хотите использовать в качестве основы для изменений в целевом объекте. Цель — это определение базы данных, к которому необходимо оценить и потенциально применить изменения.
После завершения выбора нажмите кнопку "ОК ", чтобы закрыть диалоговое окно и вернуться в окно "Сравнение схем".
Вы также можете выбрать кнопку "Параметры" на панели инструментов "Сравнение схем", чтобы указать, какие объекты сравниваются, какие типы различий игнорируются, а также другие параметры.
Нажмите кнопку "Сравнить" на панели инструментов "Сравнение схем", чтобы запустить процесс сравнения.
Когда сравнение будет завершено, структурные различия между проектом и базой данных отобразятся на панели Результаты в верхней части окна. По умолчанию в результатах сравнения все различия группируются по действию (удалить, изменить или добавить). На панели Результаты отображается строка для каждого объекта базы данных, который различается в двух определениях базы данных. Каждая строка идентифицирует объект в исходной или целевой схеме (или оба) и действие, которое будет выполняться в целевой схеме, чтобы сделать целевой объект таким же, как и исходный объект. Если объект был рефакторингован и переименован или перемещен в новую схему, исходные и целевые имена отличаются, а имя источника отображается полужирным шрифтом, чтобы выделить разницу.
По умолчанию все различия включаются в область действия «Обновить целевую цель». Можно исключить различия, которые не требуется синхронизировать. Для этого снимите флажок столбца Action в центре каждой строки. Если для обновления целевой базы данных используется сравнение схем, эта строка не учитывается для каких-либо ожидающих изменений.
Если исключенная строка содержит зависимые объекты (например, строка таблицы, на которую ссылается строка представления), исключенная строка отключена, но ее флажок не очищается. После того, как все зависимые от этой строки строки будут сняты, отключенная строка также будет снята. Кроме того, если строка прошла рефакторинг (переименована или перемещена в другую схему), то флажок будет недоступен и для этой строки, и для всех зависимых дочерних строк.
При обновлении сравнения эти различия, которые вы решили пропустить, игнорируются.
Чтобы обновить схему целевого объекта, у вас есть два варианта. Целевой объект можно обновить непосредственно в окне "Сравнение схем" кнопкой "Применить ", если целевой объект является базой данных или проектом, или создать скрипт обновления, если целевой объект является базой данных с кнопкой "Создать скрипт ". Созданный скрипт появляется в редакторе Transact-SQL, где можно проверить выполнение скрипта в базе данных.
Для сравнения схем требуется графический инструмент, например Visual Studio, или расширение MSSQL для Visual Studio Code.