none
Compatibilidade RRS feed

  • Pergunta

  • Restaurei um backup de um Banco SQL 2000 no SQL2005, tudo estava ok até aparecer uma aplicação VB que conecta na base através de uma string.

    O desenvolvedor da aplicação disse eu posso restaurar este banco no SQL2005 com compatibilidade para 2000 e SQL7, dai ele não precisa alterar sua DLL.

    Como faço este restore com compatibilidade?

    Alguém pode me ajudar?

    sexta-feira, 19 de setembro de 2008 12:55

Respostas

  • Bom Dia Marteli,

     

    Seja bem vindo ao fórum MSDN. Inicialmente eu peço desculpas, pois, só hoje vi sua dúvida.

    Creio que ela deva ter se perdido entre os posts e ninguém deu a devida atenção. Vamos então tentar ajudá-lo.

     

    Toda vez que uma versão do SQL Server é lançada ela adiciona novos recursos de código T-SQL. No SQL Server 7, por exemplo, tivemos o operador TOP. No SQL Server 2000 foi lançado o comando CREATE FUNCTION e no SQL Server 2005 contamos com os operadores CROSS APPLY. Cada uma dessas versões ganha um número que identifica-a. O SQL Server 7 por exemplo é o 70, o SQL Server 2000 é o 80 e o SQL Server 2005 é o 90.

     

    Quando uma nova versão é lançada, novos comandos são adicionados, mas os comandos de versões anteriores podem ser descontinuados ou mudar o seu comportamento. Nesse caso aplicações escritas podem parar de funcionar ou se comportar de forma não esperada. Para que você evite esse comportamento, você pode alterar o nível de compatibilidade. Podemos por exemplo ter o SQL Server 2005 pensando como o SQL Server 7 se alterarmos o nível de compatibilidade de 90 para 70 e assim uma aplicação que funcionava no SQL Server 7 deve apresentar o mesmo comportamento (ainda que o SQL Server seja 2005).

     

    Isso tem um ponto positivo que é tornar as migrações mais tranqüilas, mas ao voltar o nível de compatibilidade, você também está impedido de usar os novos recursos. Se você tem uma base no 2005 com o nível de compatibilidade como 70, você não conseguirá usar os novos recursos de TSQL do 2005, pois, no nível 70 esses recursos não estão disponíveis.

     

    Vale a pena lembrar que nível de compatibilidade refere-se somente a código TSQL. O fato de você mudar o nível de compatibilidade de 90 para 70 não permitirá que você restaure uma base do 2005 no SQL Server 7. Apenas o código TSQL é sensível ao nível de compatibilidade.

     

    Você pode alterar o nível de compatibilidade através do SQL Server Management Studio se verificar as propriedades do seu banco na guia options em Compatibility Level. Em todo caso se preferir fazer via comando, utilize a procedure sp_dbcmptlevel. Ex: sp_dbcmptlevel 'Banco', 80. No Books OnLine há mais referências sobre essa procedure e uma explicação do que muda entre os níveis de compatibilidade.

     

    [ ]s,

     

    Gustavo

    sexta-feira, 26 de setembro de 2008 13:10