Я працюю над великим проектом ETL та DW, де ми використовуємо управління TFS / джерелом разом із SSIS та SSDT.
Сьогодні я з’ясував, що хоча пакет SSIS виконує ВСТУПНУ ВСТУПУ в таблиці бази даних, неможливо виконати порівняння схеми SSDT з цією базою даних. Це прикро, оскільки для завершення деяких наших пакунків потрібно досить багато часу. Ми хочемо використовувати функцію Порівняння схеми для виявлення змін у структурі бази даних, щоб зберегти їх у нашому проекті SSDT для контролю версій бази даних.
Трохи докладніше вивчивши це, я виявив, що функція порівняння схем у SSDT виконує скрипт SQL, який викликає OBJECTPROPERTY()
системну функцію на таблицях бази даних. Зокрема, у моєму випадку будь-які дзвінки, OBJECTPROPERTY(<object_id>, N'IsEncrypted')
схоже, блокуються, коли <object_id>
йдеться про таблицю, яка наразі вставляється масово.
У Visual Studio схема SSDT просто порівняти час від часу та стверджує, що ніяких відмінностей не виявлено.
Чи є вирішення цієї проблеми в SSDT, чи я можу спробувати подати звіт про помилку MS Connect?
Крім того, оскільки BULK INSERT відбувається з пакету SSIS, чи може бути якийсь спосіб зробити це вставлення без блокування OBJECTPROPERTY
дзвінків на стіл? Редагувати: У пунктах призначення SSIS OLE DB ми можемо зняти галочку з "Блокування таблиці", яка виконує те, що йдеться, але це може зашкодити продуктивності в деяких ситуаціях. Мене набагато більше цікавить рішення, яке дозволяє схемі порівняння SSDT виконувати свою роботу, навіть якщо деякі об'єкти заблоковані.