Temos alguns scripts de banco de dados que precisam ser migrados do SQL Server 2008 R2 de volta para 2005, muitas vezes os scripts criados no SQL Server 2008/2008 R2 não serão executados em uma instalação do SQL Server 2005 (que alguns clientes ainda usam).
Então, minha pergunta: com base em sua experiência/conhecimento, isso é realmente necessário ou definir o nível de compatibilidade de volta para 90 no SQL Server 2008 (2008 R2) corrige o problema de quebra despercebida de scripts no SQL Server 2005? O MSDN diz que "o nível de compatibilidade fornece apenas compatibilidade parcial com versões anteriores do SQL Server", então não tenho certeza aqui.
Obrigado...
Eu gostaria de uma lista concreta de "recursos passarão do nível de compatibilidade 90, mas quebrarão no SQL Server 2005" ou no link. Se a lista for uma lista curta, poderíamos convertê-la em uma lista interna "não faça isso!" muito trabalho.
Não, o nível de compatibilidade é para permitir que recursos obsoletos funcionem, não para impedir que você escreva código que não funcionará em uma versão inferior.
Se sua máquina de produção for SQL Server 2005, você deve desenvolver em uma máquina SQL Server 2005 para garantir que os recursos permitidos em 2005 sejam os únicos no código.
É claro que em Books online há uma página que mostra todos os recursos que são novos em 2008, então você pode simplesmente proibir seus desenvolvedores de usá-los. E verifique-os nas revisões de código, mas desenvolver em um banco de dados correto é a única solução real.
A lista não é curta e exótica, o modo de compatibilidade não se destina a permitir que você desenvolva em um banco de dados superior e implante em um inferior.
Não. O nível de compatibilidade afeta apenas alguns recursos existentes em ambas as versões. Para dar um exemplo do nível de compatibilidade ALTER DATABASE :
Como você pode ver, você ainda pode escrever um script que usa MERGE, um recurso somente pós-SQL Server 2008, e executá-lo no modo de compatibilidade 90, e ele funcionará. No entanto, o script será interrompido no SQL Server 2005. O nível de compatibilidade 90 afeta apenas a imposição da palavra-chave (o que afeta a análise, no modo 100 uma tabela nomeada
MERGE
teria que ser colocada entre colchetes como[MERGE]
), mas não a execução.Existem muitos outros recursos como este. Portanto, sua única opção é executar no SQL Server de destino.