Порівняння і синхронізація схем баз даних
Можна порівняти наступні сутності, що містять визначення схеми бази даних.
Проект компонента додатків рівня даних (DAC) - проект, який створює DACPAC-файл при побудові.
DBSCHEMA-файл - результат побудови проекту бази даних або проекту сервера.
DACPAC-файл - результат побудови проекту компонента додатків рівня даних (DAC).
У наступній таблиці представлені типи схем, які можна порівняти, і вказано, чи можна записати поновлення в цільову схему.
Для використання цієї таблиці знайдіть рядок вашої вихідної схеми в крайньому лівому стовпчику. Потім натисніть стовпець вашої цільової схеми в верхньому рядку. На перетині цього стовпця і цього рядка містяться відомості про те, є чи тільки порівняння вихідної і цільової схем або можна порівняти інший результат, а потім, при необхідності, оновити цільову схему.
Неможливо порівняти схему сервера зі схемою бази даних або схему бази даних зі схемою сервера. Це відноситься і до схем у вигляді DBSCHEMA-файлу. Можна, наприклад, порівняти проект сервера з DBSCHEMA-файлом, створеним з проекту сервера.
Два проекти бази даних можна порівняти тільки в тому випадку, якщо вони містяться в одному рішенні в Visual Studio.
Незважаючи на те що можна порівняти вихідну базу даних з цільовим проектом бази даних (DBPROJ), слід змінити проект бази даних і розгорнути ці зміни в базі даних. При зміні проекту (DBPROJ) і його подальшому розгортанні знижується ризик того, що виконані зміни будуть конфліктувати зі змінами, зробленими іншим членом команди, оскільки проект перебуває в системі управління версіями.
Використання порівняння схем для поновлення схем баз даних може привести до втрати даних. Щоб уникнути втрати даних, слід приділяти особливу увагу іменам об'єктів у вихідній і цільової схемах, особливо безпосередньо перед оновленням цільової схеми.
Наприклад, можна перейменувати таблицю з Order_Details на OrderDetails у вихідній базі даних, але не в цільової базі даних, а потім порівняти дві бази даних. Перед синхронізацією дані в обох таблицях ідентичні. Однак при оновленні цільової схеми таблиця Order_Details видаляється, і створюється нова таблиця OrderDetails. При цьому всі дані таблиці Order_Details можуть бути втрачені.
Щоб уникнути втрати даних, можна відкрити меню Сервіс. клацнути Параметри і встановити прапорець Блокувати оновлення схеми при можливості втрати даних. Крім того, можна завжди створити резервну копію бази даних перед записом оновлень в неї. Крім того, можна вказати параметри для порівняння при порівнянні схем. Додаткові відомості див. У розділі Практичний посібник. Установка параметрів порівняння схем бази даних.
Якщо для перейменування об'єктів в проекті бази даних використовується рефакторинг, журнал рефакторінга також допомагає запобігти втраті даних при побудові і розгортанні бази даних. У цьому журналі зберігається мета змін. Наприклад, таблиці можуть бути перейменовані на місці.
Процес розгортання оновлень в існуючу базу даних дуже схожий на процес використання порівняння схем для синхронізації двох схем баз даних. Однак порівняння схем має одна важлива відмінність: за замовчуванням при порівнянні схем ігноруються розширені властивості.
Якщо потрібно проігнорувати розширені властивості і дозволу, можна змінити параметри порівняння схем для всіх сеансів порівняння схем або для поточного сеансу. Додаткові відомості див. У розділі Практичний посібник. Установка параметрів порівняння схем бази даних.
У наступній таблиці наведені описи типових задач, які можуть виявитися корисними при реалізації цього сценарію, і посилання на більш докладні відомості про виконання цих завдань.
Усунення несправностей. Докладні відомості про усунення звичайних неполадок порівнянні і синхронізації схем баз даних.
Створити. Об'єкт буде створений при записі оновлень або при запуску скрипта оновлення.
Видалити. Об'єкт буде вилучений з цільової схеми при записі оновлень або при запуску скрипта оновлення.
Дія за замовчуванням визначається станом. Для об'єктів зі значенням стану "Так само" дією за замовчуванням є "Пропустити", і його неможливо змінити. Для об'єктів зі значенням стану "Новий" дією за замовчуванням є "Створити", але можна вказати дію "Пропустити". Для об'єктів зі значенням стану "Відсутня" дією за замовчуванням є "Видалити", але можна вказати дію "Пропустити". Для об'єктів зі значенням стану "Різні визначення" дією за замовчуванням є "Оновити", але можна вказати дію "Пропустити". Для об'єктів зі значенням стану "Різні залежності" дією за замовчуванням є "Пропустити", і його неможливо змінити (в цьому випадку об'єкт є рівним, але містить нові, відсутні або змінені об'єкти).
Ім'я порівнюваного цільового проекту, бази даних або файлу проекту.
Порівняння даних можна використовувати для синхронізації даних між таблицями у вихідній і цільової базах даних.
Рефакторинг можна використовувати для перейменування всіх посилань на об'єкт бази даних. При побудові і розгортанні журнал рефакторінга використовується для збереження мети змін і зниження ризику втрати даних.
Можна оновити цільову базу даних за допомогою порівняння схем, але члени команд повинні враховувати зміну проекту бази даних, а також побудова і розгортання цих змін в цільової базі даних. Якщо слідувати інструкціям даного практичного заняття, можна зберегти мета будь-яких операцій рефакторинга, виконуваних в проекті бази даних. Також можна знизити ризик перезапису змін іншим членом команди, також використовують порівняння схем для оновлення бази даних.
З урахуванням відгуків користувачів додані відомості про те, як користуватися першою таблицею з цього розділу.
Зворотній зв'язок від клієнта.
Уточнено, що проекти можна порівняти тільки в тому випадку, якщо вони містяться в одному рішенні.
Зворотній зв'язок від клієнта.