Здесь, чтобы вы начали:
Select 'Alter Table [' + TABLE_SCHEMA + '].[' + TABLE_NAME + '] Alter Column [' + COLUMN_NAME + '] VarChar(' + CAST(CHARACTER_MAXIMUM_LENGTH As VARCHAR) + ')'
From INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'NVARCHAR'
Это сгенерирует для вас все необходимые операторы изменения (вырезать, вставить, запустить).
Обратите внимание, что это не накладывает никаких ограничений на счет.
Попросить арку данных сделать это?
или
Сгенерировать сценарий для всех объектов в вашей системе, затем изменить nvarchar, затем создать новую базу данных и импортировать в нее данные из старой.
или
Напишите сценарии изменения для обновления существующей базы данных.
(Это может быть лучший подход, если это производственная база данных или клиентская база данных.)
Чтобы обработать MAX и исключить некрасивые системные диаграммы:
SELECT
'
ALTER TABLE [' + TABLE_SCHEMA + '].[' + TABLE_NAME + ']
ALTER COLUMN [' + COLUMN_NAME + ']
VARCHAR(' +
(CASE WHEN CHARACTER_MAXIMUM_LENGTH = -1
THEN 'MAX'
ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR)
END)
+ ')
'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'NVARCHAR' AND TABLE_NAME <> 'SYSDIAGRAMS'