Avance...
Con la consulta
Código SQL:
Ver originalSELECT SERVERPROPERTY('Collation')
SELECT DATABASEPROPERTYEX('EXACTUS', 'Collation')
Veo que el server y la base CENTRAL tienen
SQL_Latin1_General_CP1_CI_AS pero que la base EXACTUS es la perdida que tiene
Modern_Spanish_CI_AS
Asi que rearme la query para ponerle al select de EXACTUS el COLLATE
Código SQL:
Ver originalSELECT
DOC.DOCUMENTO COLLATE SQL_Latin1_General_CP1_CI_AS AS DOCUMENTO,
DOC.CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS AS CLIENTE,
DOC.NOMBRE_CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS AS NOMBRE_CLIENTE,
LIN.ARTICULO COLLATE SQL_Latin1_General_CP1_CI_AS AS ARTICULO,
ART.DESCRIPCION COLLATE SQL_Latin1_General_CP1_CI_AS AS DESCRIPCION,
LIN.CANTIDAD,
DOC.TOTAL_PAGAR,
CLI.CATEGORIA_CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS AS CATEGORIA_CLIENTE,
PAG.CONDICION_PAGO,
PAG.FORMA_PAGO,
DOC.FCH_HORA_ANULA,
DOC.FCH_HORA_COBRO,
'DLCAE' AS ESTACION,
ART.CLASIFICACION_3 COLLATE SQL_Latin1_General_CP1_CI_AS AS CLASIFICACION_3
FROM DLCAE.CLIENTE CLI
INNER JOIN DLCAE.DOCUMENTO_POS DOC ON CLI.CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS = DOC.CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS
INNER JOIN DLCAE.DOC_POS_LINEA LIN ON DOC.DOCUMENTO COLLATE SQL_Latin1_General_CP1_CI_AS = LIN.DOCUMENTO COLLATE SQL_Latin1_General_CP1_CI_AS
INNER JOIN DLCAE.ARTICULO ART ON LIN.ARTICULO COLLATE SQL_Latin1_General_CP1_CI_AS = ART.ARTICULO COLLATE SQL_Latin1_General_CP1_CI_AS
INNER JOIN DLCAE.PAGO_POS PAG ON DOC.DOCUMENTO COLLATE SQL_Latin1_General_CP1_CI_AS = PAG.DOCUMENTO COLLATE SQL_Latin1_General_CP1_CI_AS
AND DOC.TIPO COLLATE SQL_Latin1_General_CP1_CI_AS = PAG.TIPO COLLATE SQL_Latin1_General_CP1_CI_AS
AND DOC.CAJA COLLATE SQL_Latin1_General_CP1_CI_AS = PAG.CAJA COLLATE SQL_Latin1_General_CP1_CI_AS
WHERE (DOC.FCH_HORA_COBRO > CONVERT(DATETIME, '2016-08-01 00:00:00', 102))
AND (CLI.CATEGORIA_CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS IN ('CCEM' ,'CCAC', 'EMP10', 'EMP7', 'CCEM'))
AND (ART.CLASIFICACION_3 COLLATE SQL_Latin1_General_CP1_CI_AS IN ('COMBUSTIBLES', 'LUBRICANTES'))
UNION ALL
SELECT
DOC.DOCUMENTO AS DOCUMENTO,
DOC.CLIENTE AS CLIENTE,
DOC.NOMBRE_CLIENTE AS NOMBRE_CLIENTE,
LIN.ARTICULO AS ARTICULO,
ART.DESCRIPCION AS DESCRIPCION,
LIN.CANTIDAD,
DOC.TOTAL_PAGAR,
CLI.CATEGORIA_CLIENTE AS CATEGORIA_CLIENTE,
PAG.CONDICION_PAGO,
PAG.FORMA_PAGO,
DOC.FCH_HORA_ANULA,
DOC.FCH_HORA_COBRO,
'ACTIAPS' AS ESTACION,
ART.CLASIFICACION_3 AS CLASIFICACION_3
FROM CENTRAL.ACTIPETROL.CLIENTE CLI
INNER JOIN CENTRAL.ACTIPETROL.DOCUMENTO_POS DOC ON CLI.CLIENTE = DOC.CLIENTE
INNER JOIN CENTRAL.ACTIPETROL.DOC_POS_LINEA LIN ON DOC.DOCUMENTO = LIN.DOCUMENTO
INNER JOIN CENTRAL.ACTIPETROL.ARTICULO ART ON LIN.ARTICULO = ART.ARTICULO
INNER JOIN CENTRAL.ACTIPETROL.PAGO_POS PAG ON DOC.DOCUMENTO = PAG.DOCUMENTO
AND DOC.TIPO = PAG.TIPO
AND DOC.CAJA = PAG.CAJA
WHERE (DOC.FCH_HORA_COBRO > CONVERT(DATETIME, '2016-08-01 00:00:00', 102))
AND (CLI.CATEGORIA_CLIENTE IN ('CCAC','EMP10','EMP7'))
AND (ART.CLASIFICACION_3 IN ('400', '420'))
AND (DOC.DOCUMENTO LIKE '%AP03%')
El error es el mismo, aun consultando los campos, las columnas, las tablas le ponga el COLLATE que le ponga el resultado es el mismo
Al cambiar el COLLATE con un alter me da error
Código SQL:
Ver originalUSE master;
GO
ALTER DATABASE EXACTUS
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO
Asi que no se que mas hacer, tengo algunos links de como cambiar collate pero no quiero hacerlo, mas que esa base es la mas grande.
Forma 1 Forma 2 Forma 3