Al intentar crear una vista, se obtiene el siguiente error:
Msg 468, Level 16, State 9, Procedure V_Monitor_Emails_Detalle, Line 3
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Modern_Spanish_CI_AS" in the UNION operation.
Contexto:
- La vista es UNION entre una tabla y una vista
- La tabla ha sido creada por el usuario
- La vista es una vista sobre otra vista nativa de SQL Server
El problema es que algunas columnas tienen distintas "collation" que otras y esto es verificado por SQL Server, por cada columna al momento de hacer la UNION. En este caso la causa del problema es que una es una vista nativa y la otra es una tabla creada por el usuario.
Accediendo a las propiedades de cada columna, se puede ver el detalle:
La forma de resolverlo es agregando COLLATE DATABASE_DEFAULT en las columnas que correspondan, por ejemplo:
(...)
,[Enviado]
,[Error]
,[Cuenta]
FROM
Correos C
UNION
SELECT Year(Fecha) As Anio, Month(Fecha) AS Mes, Day(Fecha) AS Dia, DATEPART(HOUR,Fecha) AS Hora,
null AS [ID]
,null AS [Estado]
,null AS [Reintentos]
,null AS [Último reintento]
,[Fecha]
,'ND' AS [Para]
,null AS [CC]
,null AS [CO]
,Titulo COLLATE DATABASE_DEFAULT AS [Asunto]
,Adicional COLLATE DATABASE_DEFAULT AS [Cuerpo]
,null AS [Adjuntos]
,null AS [Formato]