Как изменить каждый nvarchar столбец на varchar?

re.pl от Devel:: REPL

7
задан CodeMonkey1313 3 December 2009 в 19:59
поделиться

3 ответа

Здесь, чтобы вы начали:

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'

Это сгенерирует для вас все необходимые операторы изменения (вырезать, вставить, запустить).

Обратите внимание, что это не накладывает никаких ограничений на счет.

16
ответ дан 6 December 2019 в 07:26
поделиться

Попросить арку данных сделать это?

или

Сгенерировать сценарий для всех объектов в вашей системе, затем изменить nvarchar, затем создать новую базу данных и импортировать в нее данные из старой.

или

Напишите сценарии изменения для обновления существующей базы данных.
(Это может быть лучший подход, если это производственная база данных или клиентская база данных.)

3
ответ дан 6 December 2019 в 07:26
поделиться

Чтобы обработать 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'
5
ответ дан 6 December 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: