none
Collation Conflict RRS feed

  • Pergunta

  • Tinha uma base no sql server 2000, restaurei ela no 2005, porem agora esta tentando fazer uma operação e me traz o erro abaixo. Alguem pode me ajudar?

     

    Cannot resolve the collation conflict between "Sql_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AI"

     

    obrigado

    Douglas Rescaroli

     

    quarta-feira, 10 de outubro de 2007 14:36

Todas as Respostas

  • bom isso deve estar ocorrendo por que provavelmente vc. usa tabelas temporarias e o collate default do seu sql 2005 e diferente do que vc.tinha no sql 2000. se este sql 2005 e recem instalado e mais facil remover o sql 2005 e reinstalar ele com o mesm ocollate default do 2000, caso nao seja vc. tem duas opcoes ou altera o collate do banco restaurado ou altera o collate default ( via rebuildm - que praticamente reinstala o sql server ).

     

    se vc. nao esta usando tabelas temporarias por favor pode avisar ? e passar seu select.

     

     

     

    Abs.

     

    quarta-feira, 10 de outubro de 2007 14:43
  • Douglas,

    O Collate esta igual ao collate utilizado no SQL Server 2000?

     

    Como esta configurado o collate do seu banco TEMPDB e Master?

    quarta-feira, 10 de outubro de 2007 16:39
    Moderador
  •  

    Boa Tarde Junior Galvão

     

    O collate que eu usuva no SQL server 2000 era.SQL_Latin1_General_CP1_CI_AS.

    O collate que eu uso no SQL Server 2005 é Latin1_General_CI_AI. (TEMPDB E Master)

     

    Porem eu já alterei o collate das bases que eu tinha no SQL SERVER 2000 para o mesno do SQL SERVER 2005

     

    Douglas Rescaroli

     

     

    quarta-feira, 10 de outubro de 2007 17:40
  • alterar o collate da base so nao basta, vc. tem que alterar os collates dos campos das tabelas e tabelas que estao diferentes. o colltate da base e so serve para default para a criacao das tabelas, etc.;

     

    abs;

     

    quarta-feira, 10 de outubro de 2007 17:50
  •  

    Ola Marcelo,

     

    Teria que trocar através de query então.Teria algum link onde eu posso encotrar uma explicação de como montar uma query para fazer essa alteração?

     

    Obrigado

    Douglas Rescaroli

    quarta-feira, 10 de outubro de 2007 17:58
  •  

    se for for para query e so passar

     

    select ... from tabela inner join tabela2 on tabela.campochar collate Latnin..... = tabel2.campochar

     

     

    agora, veja no site www.mcdbabrasil.com.br procure por collate la tem um script que troca o collate de tudo de um banco de dados, qualquer coisa retorne.

     

    abs;

     

    quarta-feira, 10 de outubro de 2007 18:04
  • Marcelo,

     

    Você não considera mais seguro realizar a troca do collate, ao invês de ficar declarando o collate no select?

    quarta-feira, 10 de outubro de 2007 18:12
    Moderador
  • com certeza usar a instrucao collate forca recompilacao da query, e nao vai usar indice se ele existir para a coluna.

     

    Abs/

     

    quarta-feira, 10 de outubro de 2007 18:15
  • Colla,

     

    É justamente isso que eu sempre fico preocupado, o processo de recompilação e não utilização do índice.

    quarta-feira, 10 de outubro de 2007 20:10
    Moderador