none
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AI" and "Latin1_General_CI_AS_KS_WS" in the equal to operation. RRS feed

  • Pergunta

  • Boa tarde. Estou desenvolvendo uma procedure e esta dando esse erro "Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AI" and "Latin1_General_CI_AS_KS_WS" in the equal to operation."

    Crio 2 Tabela temporaria, adiciono uns registro na primeira e depois ao tentar adicionar na segunda tabela usando a primeira na clausula WHERE esta dando esse erro.

    DECLARE @Tabela_Objetos TABLE(Registro INT IDENTITY(1, 1), Objeto VARCHAR(100), ID_Tipo VARCHAR(2))
    DECLARE @Tabela_Tipos TABLE(Registro INT IDENTITY(1, 1), Tipo VARCHAR(2), Descricao VARCHAR(100))
    
    INSERT INTO @Tabela_Tipos VALUES('U', 'TABLE (user-defined)')
    INSERT INTO @Tabela_Tipos VALUES('V', 'VIEW')
    INSERT INTO @Tabela_Tipos VALUES('P', 'SQL STORED PROCEDURE')
    INSERT INTO @Tabela_Tipos VALUES('TR', 'SQL DML TRIGGER')
    --INSERT INTO @Tabela_Tipos VALUES('S', 'System base TABLE')
    --INSERT INTO @Tabela_Tipos VALUES('IT', 'Internal TABLE')
    INSERT INTO @Tabela_Tipos VALUES('FN', 'SQL scalar FUNCTION')
    INSERT INTO @Tabela_Tipos VALUES('IF', 'SQL inline TABLE-valued FUNCTION')
    INSERT INTO @Tabela_Tipos VALUES('TF', 'SQL TABLE-valued-FUNCTION')
    INSERT INTO @Tabela_Tipos VALUES('X', 'Extended STORED PROCEDURE')
    INSERT INTO @Tabela_Tipos VALUES('AF', 'Aggregate FUNCTION (CLR)')
    INSERT INTO @Tabela_Tipos VALUES('PC', 'Assembly (CLR) STORED PROCEDURE')
    INSERT INTO @Tabela_Tipos VALUES('FS', 'Assembly (CLR) scalar FUNCTION')
    INSERT INTO @Tabela_Tipos VALUES('FT', 'Assembly (CLR) TABLE-valued FUNCTION')
    INSERT INTO @Tabela_Tipos VALUES('TA', 'Assembly (CLR) DML TRIGGER')
    
    INSERT INTO @Tabela_Objetos SELECT Sys.Objects.Name, Sys.Objects.Type FROM Sys.Objects WHERE Sys.Objects.Type IN (SELECT Tipo FROM @Tabela_Tipos) ORDER BY Sys.Objects.Name
    
    O que pode ser? Obrigado!

    segunda-feira, 13 de maio de 2013 17:34

Respostas

  • Boa tarde DaviSaba

    Para resolver o seu problema você pode forçar o uso do Collate no join das tabelas, mas antes de fazer isso sugiro que você entende oq é Collate, veja aqui: COLLATE

    E aqui está a resolução do seu problema: RESPOSTA

    Abraços.

    • Marcado como Resposta DaviSaba segunda-feira, 13 de maio de 2013 18:41
    segunda-feira, 13 de maio de 2013 18:15

Todas as Respostas

  • Boa tarde DaviSaba

    Para resolver o seu problema você pode forçar o uso do Collate no join das tabelas, mas antes de fazer isso sugiro que você entende oq é Collate, veja aqui: COLLATE

    E aqui está a resolução do seu problema: RESPOSTA

    Abraços.

    • Marcado como Resposta DaviSaba segunda-feira, 13 de maio de 2013 18:41
    segunda-feira, 13 de maio de 2013 18:15
  • Gabriel obrigado! Eu sei o que é Collate.

    Utilizando o seu exemplo que voce sugeriu do site do Gustavo eu fiz assim e funcionou:

    INSERT INTO @Tabela_Objetos SELECT Sys.Objects.Name, Sys.Objects.Type FROM Sys.Objects WHERE Sys.Objects.Type COLLATE Latin1_General_CI_AI IN (SELECT Tipo COLLATE Latin1_General_CI_AI FROM @Tabela_Tipos) ORDER BY Sys.Objects.Name

    Agradeço, valeu!

    segunda-feira, 13 de maio de 2013 18:41