AVISO LEGAL: Eu sei que essa pergunta já foi feita centenas de vezes antes, mas eu só queria verificar se não havia uma solução mais fácil que eu poderia ter perdido antes de prosseguir e escrever / obter muitos códigos para fazer isso.
Nosso software usa um banco de dados que foi originalmente projetado para o SQL Server 7 e, como tal, todos os scripts que o criam não especificam nenhum agrupamento explícito para nenhuma coluna de caracteres. Em vez disso, quando um banco de dados é criado / restaurado para o SQL Server 2000 ou superior, todas as colunas herdam o agrupamento do banco de dados (o que acontece SQL_Latin1_General_CP1_CI_AS
desde que esse era o padrão do SQL Server 7).
Teoricamente, isso não importaria muito, pois se o nosso banco de dados for criado do zero no servidor de um cliente, ele herdará o agrupamento de servidores do cliente (que normalmente é o padrão de instalação moderno Latin1_General_CP1_CI_AS
) e tudo funciona. No entanto, esse cenário é interrompido quando eles nos enviam um backup de banco de dados ou enviamos um backup de banco de dados, e nós ou eles obtemos o temido erro de incompatibilidade de agrupamento sempre que o código tenta acessar tabelas temporárias etc.
Tentamos educar os clientes para instalar ou reconstruir suas instâncias do SQL Server para usar nosso agrupamento preferido, mas é claro que isso nem sempre acontece e nem sempre é possível.
As soluções que envolvem a criação de um novo banco de dados e a cópia dos dados não são realmente práticas para nós, precisamos de uma "varinha mágica" que possamos acenar em um banco de dados ativo para corrigir todas as colunas no local sem perturbar os dados. Estou pensando em escrever um utilitário para fazer isso, mas como será um grande trabalho, alguém tem alguma sugestão mais simples?