La sélection à partir de INFORMATION_SCHEMA.COLUMNS est un bon moyen de déterminer quelles colonnes doivent être converties,
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE DATA_TYPE = 'CHAR';
Mais il ne peut pas être utilisé pour modifier directement le type de données d'une colonne. ALTER TABLE est utilisé pour modifier les types de données des colonnes :
ALTER TABLE [dbo].[TableName] ALTER COLUMN [ColumnName] NVARCHAR(50);
Pendant que vous y êtes, évitez d'utiliser NVARCHAR(MAX)
sauf si c'est absolument nécessaire. Assurez-vous que vos types de données sont dimensionnés spécifiquement pour l'attribut. Si votre CHAR
les colonnes sont déjà dimensionnées correctement, utilisez le script suivant pour générer la ALTER TABLE
déclarations :
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';
Gardez à l'esprit que cela ne génère que les instructions ALTER TABLE, vous devrez copier les résultats et exécuter dans un nouvel onglet pour modifier les types de données.