Edit: Для того, чтобы отразить комментарии:
Что быстрее, зависит от того, насколько дорого операция внести изменения в столбец вместе с тем, сколько столбцов в таблице необходимо изменить. Например, изменение одного столбца нулей - это не очень дорого. Но если у вас много данных, вы и много столбцов в таблице, лучше сделать таблицу для новой копии таблицы. Решая это в зависимости от показателей вашей базы данных, и не всегда есть правильный и неправильный anseer.
Возможно, вы создадите динамический sql для создания sql, который изменяет длину столбцов, которые не соответствуют размеру. Это должно быть самым быстрым способом.
что-то вроде:
SELECT
'some decision logic...' -- substitute values as needed
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
ISNULL(CHARACTER_MAXIMUM_LENGTH, 5) <> 5
AND DATA_TYPE = 'NVARCHAR'
И вы могли бы добавить в метриках, которые вы хотите, чтобы учесть, размер таблицы, данные числа размера столбцов (группы по) и т.д.
Сервер SQL уже хранит все эти метаданные, и вы можете просто запросить его. Кажется неправильным дублировать эту информацию в пользовательской таблице и курсором над ней. Проблема, о которой я упоминаю, заключается в том, что дублирование этой информации может привести к устаревшим данным, в то время как метаданные sql-сервера будут постоянно обновляться. чтобы было проще создать представление о метаданных, чтобы сделать его легко доступным. Но это другой вопрос.
столбцов таблицы и их размеры сохраняются в конкретном table и мы прокручиваем его – VSP
Если столбцы и их размеры могут быть доступны как набор из одной строки, должно быть тривиально выполнять запрос в наборе строк и отфильтровывать столбцы, которые не нуждаются в изменении. * Затем * вы продолжите цикл через оставшиеся строки, как сейчас. Имеет ли это смысл? –