Порівняння і синхронізація схем баз даних

Можна порівняти наступні сутності, що містять визначення схеми бази даних.

Проект компонента додатків рівня даних (DAC) - проект, який створює DACPAC-файл при побудові.

DBSCHEMA-файл - результат побудови проекту бази даних або проекту сервера.

DACPAC-файл - результат побудови проекту компонента додатків рівня даних (DAC).

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

Для використання цієї таблиці знайдіть рядок вашої вихідної схеми в крайньому лівому стовпчику. Потім натисніть стовпець вашої цільової схеми в верхньому рядку. На перетині цього стовпця і цього рядка містяться відомості про те, є чи тільки порівняння вихідної і цільової схем або можна порівняти інший результат, а потім, при необхідності, оновити цільову схему.

Неможливо порівняти схему сервера зі схемою бази даних або схему бази даних зі схемою сервера. Це відноситься і до схем у вигляді DBSCHEMA-файлу. Можна, наприклад, порівняти проект сервера з DBSCHEMA-файлом, створеним з проекту сервера.

Два проекти бази даних можна порівняти тільки в тому випадку, якщо вони містяться в одному рішенні в Visual Studio.

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

Використання порівняння схем для поновлення схем баз даних може привести до втрати даних. Щоб уникнути втрати даних, слід приділяти особливу увагу іменам об'єктів у вихідній і цільової схемах, особливо безпосередньо перед оновленням цільової схеми.

Наприклад, можна перейменувати таблицю з Order_Details на OrderDetails у вихідній базі даних, але не в цільової базі даних, а потім порівняти дві бази даних. Перед синхронізацією дані в обох таблицях ідентичні. Однак при оновленні цільової схеми таблиця Order_Details видаляється, і створюється нова таблиця OrderDetails. При цьому всі дані таблиці Order_Details можуть бути втрачені.

Щоб уникнути втрати даних, можна відкрити меню Сервіс. клацнути Параметри і встановити прапорець Блокувати оновлення схеми при можливості втрати даних. Крім того, можна завжди створити резервну копію бази даних перед записом оновлень в неї. Крім того, можна вказати параметри для порівняння при порівнянні схем. Додаткові відомості див. У розділі Практичний посібник. Установка параметрів порівняння схем бази даних.

Якщо для перейменування об'єктів в проекті бази даних використовується рефакторинг, журнал рефакторінга також допомагає запобігти втраті даних при побудові і розгортанні бази даних. У цьому журналі зберігається мета змін. Наприклад, таблиці можуть бути перейменовані на місці.

Процес розгортання оновлень в існуючу базу даних дуже схожий на процес використання порівняння схем для синхронізації двох схем баз даних. Однак порівняння схем має одна важлива відмінність: за замовчуванням при порівнянні схем ігноруються розширені властивості.

Якщо потрібно проігнорувати розширені властивості і дозволу, можна змінити параметри порівняння схем для всіх сеансів порівняння схем або для поточного сеансу. Додаткові відомості див. У розділі Практичний посібник. Установка параметрів порівняння схем бази даних.

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

Усунення несправностей. Докладні відомості про усунення звичайних неполадок порівнянні і синхронізації схем баз даних.

Створити. Об'єкт буде створений при записі оновлень або при запуску скрипта оновлення.

Видалити. Об'єкт буде вилучений з цільової схеми при записі оновлень або при запуску скрипта оновлення.

Дія за замовчуванням визначається станом. Для об'єктів зі значенням стану "Так само" дією за замовчуванням є "Пропустити", і його неможливо змінити. Для об'єктів зі значенням стану "Новий" дією за замовчуванням є "Створити", але можна вказати дію "Пропустити". Для об'єктів зі значенням стану "Відсутня" дією за замовчуванням є "Видалити", але можна вказати дію "Пропустити". Для об'єктів зі значенням стану "Різні визначення" дією за замовчуванням є "Оновити", але можна вказати дію "Пропустити". Для об'єктів зі значенням стану "Різні залежності" дією за замовчуванням є "Пропустити", і його неможливо змінити (в цьому випадку об'єкт є рівним, але містить нові, відсутні або змінені об'єкти).

Ім'я порівнюваного цільового проекту, бази даних або файлу проекту.

Порівняння даних можна використовувати для синхронізації даних між таблицями у вихідній і цільової базах даних.

Рефакторинг можна використовувати для перейменування всіх посилань на об'єкт бази даних. При побудові і розгортанні журнал рефакторінга використовується для збереження мети змін і зниження ризику втрати даних.

Можна оновити цільову базу даних за допомогою порівняння схем, але члени команд повинні враховувати зміну проекту бази даних, а також побудова і розгортання цих змін в цільової базі даних. Якщо слідувати інструкціям даного практичного заняття, можна зберегти мета будь-яких операцій рефакторинга, виконуваних в проекті бази даних. Також можна знизити ризик перезапису змін іншим членом команди, також використовують порівняння схем для оновлення бази даних.

З урахуванням відгуків користувачів додані відомості про те, як користуватися першою таблицею з цього розділу.

Зворотній зв'язок від клієнта.

Уточнено, що проекти можна порівняти тільки в тому випадку, якщо вони містяться в одному рішенні.

Зворотній зв'язок від клієнта.