Update Collation of all fields in database on the fly

后端 未结 8 1726
说谎
说谎 2020-12-07 21:00

We recently moved our database from our SQL Server 2005 server to our SQL Server 2008 server. Everything moved over fine, however now we are finding that we are getting col

8条回答
  •  感动是毒
    2020-12-07 21:35

    How about:

    DECLARE @collation NVARCHAR(64)
    SET @collation = 'Latin1_General_CI_AS'
    
    SELECT
        'ALTER TABLE [' + TABLE_SCHEMA  + '].[' + TABLE_NAME + '] '
      + 'ALTER COLUMN [' + COLUMN_NAME + '] '
      + DATA_TYPE + '(' + CASE CHARACTER_MAXIMUM_LENGTH 
            WHEN -1 THEN 'MAX' 
            ELSE CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR) END + ') '
      + 'COLLATE ' + @collation + ' '
      + CASE WHEN IS_NULLABLE = 'NO' THEN 'NOT NULL' ELSE 'NULL' END
    FROM INFORMATION_SCHEMA.columns
    WHERE  COLLATION_NAME IS NOT NULL
    AND COLLATION_NAME <> @collation
    

提交回复
热议问题