-- Returns a list of executable ALTER sql statements for columns in a given db which don't match the database's default collation-- To update the DB you need to run the returned SQL Statements...-- ...but PLEASE REVIEW SQL GENERATED BEFORE EXECUTINGUSE{YOURDBHERE};DECLARE@DatabaseCollationVARCHAR(100)SET@DatabaseCollation=(SELECTcollation_nameFROMsys.databasesWHEREdatabase_id=DB_ID());SELECT'ALTER TABLE '+schema_name(t.schema_id)+'.'+t.Name+' '+'ALTER COLUMN '+c.name+' '+CASEWHENty.name='text'THENty.name+' 'ELSEty.name+'('+CASEWHENc.max_length=-1THEN'max'ELSECAST(c.max_lengthasvarchar)END+') 'END+'COLLATE DATABASE_DEFAULT '+CASEWHENc.is_nullable=1THEN'NULL'ELSE'NOT NULL'END+' '+';'ASSQLCommandFROMsys.columnscINNERJOINsys.tablestONc.object_id=t.object_idINNERJOINsys.typestyONc.system_type_id=ty.system_type_idWHEREt.is_ms_shipped=0ANDty.name!='sysname'ANDc.collation_name<>@DatabaseCollationORDERBYt.Name,c.name
-- Returns a list of any column which collation doesn't match the database's defaultUSE{YOURDBHERE};DECLARE@DatabaseCollationVARCHAR(100)SET@DatabaseCollation=(SELECTcollation_nameFROMsys.databasesWHEREdatabase_id=DB_ID())SELECTt.Name'Table Name',c.name'Col Name',ty.name'Type Name',c.max_length,c.collation_name,c.is_nullableFROMsys.columnscINNERJOINsys.tablestONc.object_id=t.object_idINNERJOINsys.typestyONc.system_type_id=ty.system_type_idWHEREt.is_ms_shipped=0ANDc.collation_name<>@DatabaseCollationORDERBYt.Name,c.name
Comments (0)
HTTPSSSH
You can clone a snippet to your computer for local editing.
Learn more.