A seleção de INFORMATION_SCHEMA.COLUMNS é uma boa maneira de determinar quais colunas precisam ser convertidas,
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';
Mas não pode ser usado para alterar diretamente o tipo de dados de uma coluna. ALTER TABLE é usado para modificar os tipos de dados da coluna:
ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);
Enquanto estiver nisso, evite usar
NVARCHAR(MAX)
a menos que seja absolutamente necessário. Certifique-se de que seus tipos de dados sejam dimensionados especificamente para o atributo. Se o seu CHAR
colunas já estão dimensionadas corretamente, use o script a seguir para gerar o ALTER TABLE
declarações:SELECT 'ALTER TABLE ' +
QUOTENAME(TABLE_SCHEMA) + '.' +
QUOTENAME(TABLE_NAME) +
' ALTER COLUMN ' +
QUOTENAME(COLUMN_NAME) +
' NVARCHAR(' +
CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR(4)) + ');'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE = 'char';
Tenha em mente que isso gera apenas as instruções ALTER TABLE, você precisará copiar os resultados e executar em uma nova guia para alterar os tipos de dados.