Ver Mensaje Individual
  #12 (permalink)  
Antiguo 10/08/2016, 15:53
Avatar de KATHYU
KATHYU
 
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 11 años, 4 meses
Puntos: 46
Respuesta: Problema con el COLLATE

Avance...

Con la consulta
Código SQL:
Ver original
  1. SELECT SERVERPROPERTY('Collation')
  2.  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 original
  1. SELECT    
  2.      DOC.DOCUMENTO COLLATE SQL_Latin1_General_CP1_CI_AS AS DOCUMENTO,
  3.      DOC.CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS AS CLIENTE,
  4.      DOC.NOMBRE_CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS AS NOMBRE_CLIENTE,
  5.      LIN.ARTICULO COLLATE SQL_Latin1_General_CP1_CI_AS AS ARTICULO,
  6.      ART.DESCRIPCION COLLATE SQL_Latin1_General_CP1_CI_AS AS DESCRIPCION,
  7.      LIN.CANTIDAD,
  8.      DOC.TOTAL_PAGAR,
  9.      CLI.CATEGORIA_CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS AS CATEGORIA_CLIENTE,
  10.      PAG.CONDICION_PAGO,
  11.      PAG.FORMA_PAGO,
  12.      DOC.FCH_HORA_ANULA,
  13.      DOC.FCH_HORA_COBRO,
  14.      'DLCAE'  AS ESTACION,
  15.      ART.CLASIFICACION_3 COLLATE SQL_Latin1_General_CP1_CI_AS AS CLASIFICACION_3
  16. FROM    DLCAE.CLIENTE CLI
  17.         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
  18.         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
  19.         INNER JOIN DLCAE.ARTICULO ART ON LIN.ARTICULO COLLATE SQL_Latin1_General_CP1_CI_AS = ART.ARTICULO COLLATE SQL_Latin1_General_CP1_CI_AS
  20.         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
  21.         AND DOC.TIPO COLLATE SQL_Latin1_General_CP1_CI_AS = PAG.TIPO COLLATE SQL_Latin1_General_CP1_CI_AS
  22.         AND DOC.CAJA COLLATE SQL_Latin1_General_CP1_CI_AS = PAG.CAJA COLLATE SQL_Latin1_General_CP1_CI_AS
  23. WHERE     (DOC.FCH_HORA_COBRO > CONVERT(DATETIME, '2016-08-01 00:00:00', 102))
  24.     AND (CLI.CATEGORIA_CLIENTE COLLATE SQL_Latin1_General_CP1_CI_AS  IN ('CCEM' ,'CCAC', 'EMP10', 'EMP7', 'CCEM'))
  25.     AND (ART.CLASIFICACION_3 COLLATE SQL_Latin1_General_CP1_CI_AS  IN ('COMBUSTIBLES', 'LUBRICANTES'))
  26.  
  27. UNION ALL
  28.  
  29. SELECT    
  30.      DOC.DOCUMENTO  AS DOCUMENTO,
  31.      DOC.CLIENTE  AS CLIENTE,
  32.      DOC.NOMBRE_CLIENTE  AS NOMBRE_CLIENTE,
  33.      LIN.ARTICULO  AS ARTICULO,
  34.      ART.DESCRIPCION  AS DESCRIPCION,
  35.      LIN.CANTIDAD,
  36.      DOC.TOTAL_PAGAR,
  37.      CLI.CATEGORIA_CLIENTE  AS CATEGORIA_CLIENTE,
  38.      PAG.CONDICION_PAGO,
  39.      PAG.FORMA_PAGO,
  40.      DOC.FCH_HORA_ANULA,
  41.      DOC.FCH_HORA_COBRO,
  42.      'ACTIAPS'  AS ESTACION,
  43.      ART.CLASIFICACION_3  AS CLASIFICACION_3
  44. FROM    CENTRAL.ACTIPETROL.CLIENTE CLI
  45.         INNER JOIN CENTRAL.ACTIPETROL.DOCUMENTO_POS DOC ON CLI.CLIENTE  = DOC.CLIENTE
  46.         INNER JOIN CENTRAL.ACTIPETROL.DOC_POS_LINEA LIN ON DOC.DOCUMENTO  = LIN.DOCUMENTO
  47.         INNER JOIN CENTRAL.ACTIPETROL.ARTICULO ART ON LIN.ARTICULO  = ART.ARTICULO
  48.         INNER JOIN CENTRAL.ACTIPETROL.PAGO_POS PAG ON DOC.DOCUMENTO  = PAG.DOCUMENTO
  49.         AND DOC.TIPO  = PAG.TIPO
  50.         AND DOC.CAJA  = PAG.CAJA
  51. WHERE   (DOC.FCH_HORA_COBRO > CONVERT(DATETIME, '2016-08-01 00:00:00', 102))
  52.     AND (CLI.CATEGORIA_CLIENTE  IN ('CCAC','EMP10','EMP7'))
  53.     AND (ART.CLASIFICACION_3  IN ('400', '420'))
  54.     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 original
  1. USE master;  
  2. GO  
  3. ALTER DATABASE EXACTUS  
  4. COLLATE SQL_Latin1_General_CP1_CI_AS ;  
  5. 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
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.