Порівняння і синхронізація views і вбудованих функцій баз даних SQL Server

Views & Inline Functions

Порівнювати і синхронізувати Views & Inline Functions.

Параметри порівняння і синхронізації views і вбудованих функцій баз даних SQL Server, включно з перебудовою всіх views, контролем ANSI_NULLS, оновленням метаданих за допомогою sp_refreshview і sp_refreshsqlmodule на основі залежностей між об'єктами структури
Створювати

Створювати нові, якщо вони не існують в цільовій базі даних.

Перебудовувати

Перебудовувати (видалити і створити) існуючі аби усунути відмінності.

Видаляти

Видаляти існуючі, якщо їх немає в шаблонній базі даних.

Перестворювати всі

Перестворювати всі об’єкти даного типу в цільовій базі даних.

ANSI_NULLS

Якщо ця опція не встановлена, то алгоритм порівняння ігноруватиме параметр ANSI_NULLS для views. Наполегливо рекомендується завжди використовувати цю опцію в порівнянні.

Додавати оновлення Views & Inline Functions

Додавати в скрипт синхронізації спеціальний алгоритм для оновлення Views & Inline Functions в відповідному порядку.

Параметри оновлення метаданих views і вбудованих функцій баз даних SQL Server шляхом виклику sp_refreshview і sp_refreshsqlmodule
Оновлювати за зміненими залежностями

Оновлювати всі об’єкти, які посилаються на змінені або перебудовані об’єкти з моменту виконання підготовчого скрипту.

Оновлювати за простроченими залежностями

Оновлювати всі об’єкти, які посилаються на інші об’єкти з більш новою датою модифікації.

Всі

Оновлювати всі об’єкти.


Оновлення метаданих за допомогою sp_refreshview і sp_refreshsqlmodule

Кінцевий етап синхронізації структури бази даних - це оновлення метаданих views і вбудованих функцій. Нижче наведена частина алгоритму, який здійснює оновлення views і вбудованих функцій ітераційним способом в необхідному порядку на основі залежностей між об'єктами.

Тип алгоритму визначається встановленими опціями в налаштуванні Додавати оновлення Views & Inline Functions.

...
WHILE @@FETCH_STATUS = 0 BEGIN
	SET @found = @found + 1;
	IF	-- skip with schemabinding
		@is_schema_bound = 0
		-- skip if it is not referencing to anything
		AND @last_referenced_modify_date IS NOT NULL AND (
			-- the referenced object has been changed by this synchronization script
			@last_referenced_modify_date > @sync_start_date
			-- the referenced object is up to date
			OR (@is_refresh_overdue = 1 AND @last_referenced_modify_date > @modify_date) ) BEGIN
		SET @iterations = @iterations + 1;
		BEGIN TRY
			IF @type = 'V' BEGIN
				EXECUTE sp_refreshview @name;
			END ELSE BEGIN
				EXECUTE sp_refreshsqlmodule @name;
			END;
...