Изменение всех вычисляемых столбцов на постоянные

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

select t.name, c.name
from sys.tables t
inner join sys.computed_columns c on c.object_id = t.object_id
where c.is_persisted = 0

Есть ли простой запрос, чтобы обновить все эти столбцы, чтобы сохранить?

1 ответ

Решение

Вы можете использовать запрос выше, чтобы создать скрипт, который выполняет что-то вроде:

SELECT schemas.name
     , all_objects.name
     , 'ALTER TABLE ' + QUOTENAME( schemas.name ) + '.' + QUOTENAME( all_objects.name ) + ' ALTER COLUMN ' + QUOTENAME( computed_columns.name ) + ' ADD PERSISTED;'
 FROM sys.schemas
 INNER JOIN sys.all_objects
    ON schemas.schema_id = all_objects.schema_id
 INNER JOIN sys.computed_columns
    ON all_objects.object_id = computed_columns.object_id
   AND computed_columns.is_persisted = 0;

Определение таблицы изменения можно найти по http://msdn.microsoft.com/en-us/library/ms190273.aspx.

Помните об ограничениях постоянных столбцов (недетерминированных функций и т. Д.), Которые могут привести к сбою части сценария.

Другие вопросы по тегам