Recientemente hemos trasladado nuestra base de datos de nuestro servidor SQL Server 2005 a nuestro servidor SQL Server 2008. Todo se movió demasiado bien, sin embargo, ahora estamos descubriendo que estamos obteniendo conflictos de intercalación. El servidor anterior tenía una intercalación diferente con el nuevo servidor.Actualización Colación de todos los campos en la base de datos sobre la marcha
Ahora nuestras tablas creadas antes del movimiento son una intercalación, y las creadas después son otra intercalación.
¿Hay alguna manera de actualizar las tablas/columnas con la antigua intercalación con la nueva intercalación?
Entiendo que el establecimiento de la intercalación de base de datos/servidor predeterminada no modifica ninguna tabla existente (link). Realmente no quiero recrear la base de datos si no es necesario.
Cualquier ayuda realmente apreciada.
ACTUALIZACIÓN
Gracias por su ayuda chicos, finalmente tuvieron que trabajar.
Para futuras referencias, aquí es mi guión final:
SELECT 'ALTER TABLE [' + SYSOBJECTS.Name + '] ALTER COLUMN [' + SYSCOLUMNS.Name + '] ' +
SYSTYPES.name +
CASE systypes.NAME
WHEN 'text' THEN ' '
ELSE
'(' + RTRIM(CASE SYSCOLUMNS.length
WHEN -1 THEN 'MAX'
ELSE CONVERT(CHAR,SYSCOLUMNS.length)
END) + ') '
END
+ ' ' + ' COLLATE Latin1_General_CI_AS ' + CASE ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END
FROM SYSCOLUMNS , SYSOBJECTS , SYSTYPES
WHERE SYSCOLUMNS.ID = SYSOBJECTS.ID
AND SYSOBJECTS.TYPE = 'U'
AND SYSTYPES.Xtype = SYSCOLUMNS.xtype
AND SYSCOLUMNS.COLLATION IS NOT NULL
AND NOT (sysobjects.NAME LIKE 'sys%')
AND NOT (SYSTYPES.name LIKE 'sys%')
GO
Aquí es el site que contenía el guión me basé en. Tuve que modificarlo para que funcione correctamente.
Russell, usted debe hacer su solución de una respuesta! –
Gracias Philipp, de todos modos está en la cima de la pregunta, y los Potros de OMG me ayudaron a llegar allí. :) – Russell