Problemas de agrupamento do SQL Server 2005

1

Eu tenho um banco de dados do SQL Server 2005 que foi construído usando um agrupamento diferente daquele de nossos servidores. Estou recebendo este erro sempre que tento executar o site:

Exception message: Cannot resolve the collation conflict between "Latin1_General_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation

Alguém sabe de alguma forma eu posso corrigir o erro sem ter que reconstruir o banco de dados?

    
por splattne 22.05.2009 / 12:17

3 respostas

2

Se o problema for uma consulta e você não tiver a opção de recriar esse banco de dados, poderá usar a palavra-chave COLLATE, por exemplo:

 SELECT *
 FROM OtherServer.xyz.dbo.Table2 t2
     inner join myTable t1 
         on t1.name = t2.name COLLATE SQL_Latin1_General_CP1_CI_AS

Aqui está a documentação da MSDN para COLLATE .

    
por 22.05.2009 / 13:04
2

Use COLLATE Database_Default para forçar a união ou comparar.

Isso tem o privilégio de ser neutro e não codifica o agrupamento, mas tem a desvantagem de resultados inesperados se você espera classificação binária ou diferencia maiúsculas de minúsculas. Nesse caso, eu esperaria que estivesse tudo bem.

SELECT
  *
FROM
 dbo.ThisTable t2
 join
 dbo.ThatTable t1 on t1.name = t2.name COLLATE Database_Default
--or dbo.myTable t1 on t1.name COLLATE Database_Default = t2.name COLLATE Database_Default
--or dbo.myTable t1 on t1.name COLLATE Database_Default = t2.name
    
por 31.05.2009 / 15:08
0

A maneira recomendada para resolver isso é reconstruir o banco de dados ou reinstalar a instância do SQL, o que eu acho que não é o que você queria aqui.

Existe uma aplicação aqui que afirma ser capaz de fazer isso por você, seu chamado co-mudador de coalizão SQL 2000, mas afirma trabalhar com o SQL 2005 também. Eu não usei isso, então eu não posso te dar uma experiência com isso, mas é uma opção. Como sempre, verifique se você fez o backup completo primeiro

    
por 22.05.2009 / 12:26