Вы можете запустить следующий скрипт, который даст вам набор команд ALTER:
SELECT 'ALTER TABLE ' + isnull(schema_name(syo.id), 'dbo') + '.' + syo.name
+ ' ALTER COLUMN ' + syc.name + ' NVARCHAR(' + case syc.length when -1 then 'MAX'
ELSE convert(nvarchar(10),syc.length) end + ');'
FROM sysobjects syo
JOIN syscolumns syc ON
syc.id = syo.id
JOIN systypes syt ON
syt.xtype = syc.xtype
WHERE
syt.name = 'varchar'
and syo.xtype='U'
Однако есть несколько быстрых предостережений для вас.
- Это будет делать только таблицы. Вам нужно будет отсканировать все ваши спроки и функции, чтобы убедиться, что они также изменены на
NVARCHAR
.
- Если у вас есть
VARCHAR
> 4000, вам нужно изменить его на NVARCHAR(MAX)
Но это должно быть легко выполнимо с этим шаблоном.
Если вы хотите, чтобы это выполнялось автоматически, вы можете установить его в предложении WHILE
.