How to Set Compatibility Level for SQL Server 2008 or 2005 Database Como definir Nível de compatibilidade para o SQL Server 2008 ou 2005 Database
When selecting data or performing query on Microosft SQL Server 2008 or SQL Server 2005 database, the following error message or failure may be returned: Ao selecionar os dados ou realizar consulta no Microosft SQL Server 2008 ou SQL Server 2005 banco de dados, a seguinte mensagem de erro ou falha pode ser devolvido:
[Microsoft][ODBC SQL Server Driver][SQL Server][Msg 4147, Level 15, State 1, Line 4] The query uses non-ANSI outer join operators (”*=” or “=*”). [Microsoft] [ODBC SQL Server Driver] [SQL Server] [Msg 4147, Level 15, State 1, Line 4] A consulta usa non-ANSI outer join operadores ("*=" ou "=*"). To run this query without modification, please set the compatibility level for current database to 80, using the SET COMPATIBILITY_LEVEL option of ALTER DATABASE. Para executar esta consulta sem modificações, por favor, defina o nível de compatibilidade de banco de dados atual para 80, usando a opção SET COMPATIBILITY_LEVEL de ALTER DATABASE. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). Recomenda-se vivamente para reescrever a consulta utilizando ANSI associação externa operadores (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions Nas versões futuras
of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes. do SQL Server, non-ANSI join operadores não terão suporte para trás, mesmo em modos de compatibilidade.
or, ou,
Msg 4147, Level 15, State 1, Line 3 Msg 4147, Level 15, State 1, Line 3
The query uses non-ANSI outer join operators (”*=” or “=*”). A consulta usa non-ANSI outer join operadores ("*=" ou "=*"). To run this query without modification, please set the compatibility level for current database to 80 or lower, using stored procedure sp_dbcmptlevel. Para executar esta consulta sem modificações, por favor, defina o nível de compatibilidade de banco de dados atual para 80 ou mais baixo, usando o procedimento armazenado sp_dbcmptlevel. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). Recomenda-se vivamente para reescrever a consulta utilizando ANSI associação externa operadores (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes. Nas versões futuras do SQL Server, non-ANSI join operadores não terão suporte para trás, mesmo em modos de compatibilidade.
The error happens because Microsoft has dropped support for and eliminated old-style *= and =* outer join operators. O erro ocorre porque a Microsoft retirou o suporte para e eliminou velho estilo *= e =* operadores de associação externa.
In order to fix the SQL Server error above, DB administrator has to set the database compatibility level to 80, which equivalent with SQL Server 2000 as a temporary workaround. A fim de corrigir o erro do SQL Server acima, administrador DB tem de definir o nível de compatibilidade do banco de dados para 80, o que equivalente com o SQL Server 2000 como uma solução temporária. Of course, the best solution is to modify the SQL statements or queries code to remove the old-style join operators with current standard SQL join syntax. Naturalmente, a melhor solução é modificar as instruções SQL ou código de consultas para remover o estilo old-operadores de associação com o padrão actual se juntar a sintaxe SQL.
For example, SQL query below is not valid: Por exemplo, a consulta SQL abaixo não é válida:
SELECT o.name FROM sys.objects o, sys.views v WHERE o.object_id *= v.object_id;
And should be replaced with the following code: E deve ser substituído com o seguinte código:
SELECT o.name FROM sys.objects o LEFT JOIN sys.views v ON o.object_id = v.object_id;
Or the following abbreviated inner join statement: Ou o seguinte abreviado INNER JOIN declaração:
SELECT o.name FROM sys.objects o, sys.views v WHERE o.object_id = v.object_id;
For administrator who can't change the code, the easiest workaround is to revert the compatibility level of the database in order to provide the backward compatibility to old-style joins. Para administrador que não pode alterar o código, a solução mais fácil é para reverter o nível de compatibilidade do banco de dados a fim de proporcionar a compatibilidade com versões anteriores ao velho estilo junta. sp_dbcmptlevel stored procedures (deprecated) or Transact-SQL can be used to set certain (partially, not all) database behaviors to be compatible with the earlier version of SQL Server. sp_dbcmptlevel procedimentos armazenados (obsoleto) ou Transact-SQL pode ser usado para definir determinados (em parte, nem todos os comportamentos) de dados a ser compatível com a versão anterior do SQL Server. This Este MSDN article Artigo do MSDN provides overview on what behaviors are changed on each compatibility level. fornece uma visão geral sobre quais comportamentos são alterados em cada nível de compatibilidade.
Version of SQL Server that can be reverted to can be one of the following: Versão do SQL Server que pode ser revertido ao pode ser um dos seguintes procedimentos:
60 = SQL Server 6.0 60 = SQL Server 6.0
65 = SQL Server 6.5 65 = SQL Server 6.5
70 = SQL Server 7.0 70 = SQL Server 7.0
80 = SQL Server 2000 80 = SQL Server 2000
90 = SQL Server 2005 90 = SQL Server 2005
100 = SQL Server 2008 100 = SQL Server 2008
Note: Compatibility level 60, 65, and 70 no longer available in SQL Server 2008. Nota: O nível de compatibilidade 60, 65 e 70 já não está disponível no SQL Server 2008. And future version of SQL Server will support only two (2) prior version of backward compatibility. E a versão futura do SQL Server oferece suporte somente dois (2) versão prévia de compatibilidade com versões anteriores. A database containing an indexed view cannot be changed to a compatibility level lower than 80. Um banco de dados contendo uma exibição indexada não pode ser alterado para um nível de compatibilidade inferior a 80. Do also take note that when a database is set to backward-compatibility mode, some of the new functionalities may be lost, such as SQL CLR support and SSMS diagrams for the database. Do também tomar nota de que, quando um banco de dados está definido para o modo de compatibilidade com versões anteriores, algumas das novas funcionalidades podem ser perdidas, como o SQL CLR apoio e diagramas SSMS para o banco de dados. Beside, the compatibility mode affects behaviors only for the specified database, not for the entire server. De resto, o modo de compatibilidade afeta comportamentos apenas para o banco de dados especificado, e não para todo o servidor.
Steps to Change and Set Compatibility Level of A Database in SQL Server Passos para alterar e definir Nível de compatibilidade de um banco de dados SQL Server
The following SQL commands can be issued in SQL Server Management Studio Query window. Os comandos SQL que se segue pode ser emitido no SQL Server Management Studio janela Consulta. Remember to execute Go after each command. Lembre-se de executar Go após cada comando.
- Optional: Set the database to single user access mode: Opcional: Defina o banco de dados único modo de acesso do usuário:
ALTER DATABASE database_name SET SINGLE_USER; - Set the database compatibility level to one of the earlier version stated above: Definir o nível de compatibilidade do banco de dados para uma versão anterior do acima referido:
Transact-SQL Method Transact-SQL Method
ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = { 80 | 90 | 100 }For example, Por exemplo,
ALTER DATABASE my_db SET COMPATIBILITY_LEVEL = 80 ALTER DATABASE SET my_db COMPATIBILITY_LEVEL = 80
sp_dbcmptlevel Stored Procedure Method sp_dbcmptlevel método procedimento armazenado
EXEC sp_dbcmptlevel database_name, compatibility_level value;For example, Por exemplo,
EXEC sp_dbcmptlevel my_db, 90; EXEC my_db sp_dbcmptlevel, 90;
- Optional: Put back the database in multiuser access mode: Opcional: Coloque de volta no banco de dados no modo de acesso multiusuário:
ALTER DATABASE database_name SET MULTI_USER;
IMPORTANT : The page is machine translated and provided "as is" without warranty. IMPORTANTE: A página é uma tradução automática e fornecido "como está" sem garantia. Machine translation may be difficult to understand. A tradução automática pode ser difícil de compreender. Please refer to Consulte a original English article artigo original Inglês whenever possible. sempre que possível.
Related Articles Artigos relacionados
- Uninstall and Remove Multiple Database Instances of Microsoft SQL Server 2005 Desinstalar e remover múltiplas instâncias do banco de dados Microsoft SQL Server 2005
- Microsoft DreamSpack Offers Free Download and License of Visual Studio 2008, Server 2003, SQL Server 2005 and More Microsoft DreamSpack Ofertas Free Download e Licença de Visual Studio 2008, Server 2003, SQL Server 2005 and More
- Download Update for Windows 7 and Server 2008 R2 Beta (KB967062) to Fix Common Application Compatibility Issue Download Atualização para o Windows 7 e Server 2008 R2 Beta (KB967062) para corrigir um problema comum Application Compatibility
- Optimize SQL Server 2000, 2005 or 2008 in Large RAM System by Locking Pages in Memory and AWE Optimize SQL Server 2000, 2005 ou 2008, em grande RAM Sistema de Bloqueio Páginas em Memória e AWE
- Check System Compatibility Via Microsoft New Application Compatibility Toolkit Version 5.5 Check System Compatibility Via Microsoft Application Compatibility Toolkit Nova Versão 5.5
- How To Perform Scheduled Backups For SQL Server 2005 Express Como realizar backups agendados para o SQL Server 2005 Express
- Error Has Occurred While Establishing A Connection To SQL Server 2005 Which Does Not Allow Local and Remote Connections Erro Ocorreu Enquanto Estabelecendo Uma ligação A SQL Server 2005 Which Does Not Allow Local and Remote Connections
- Microsoft Virtual Server 2005 R2 Download Available for Free Microsoft Virtual Server 2005 R2 disponível para download gratuito
- Change Oracle Database User Password Change Oracle Database User Password
- Microsoft Virtual Server 2005 R2 SP1 (Enterprise Edition) Direct Download Links Microsoft Virtual Server 2005 R2 SP1 (Enterprise Edition) Direct Download Links










































August 14th, 2009 03:17 14 de agosto de 2009 03:17
[...] 7) My Digital Life. [...] 7) My Digital Life. How to Set Compatibility Level for SQL Server 2008 or 2005 Database. Como definir Nível de compatibilidade para o SQL Server 2008 ou 2005 Database. http://www.mydigitallife.info/2009/05/17/how-to-set-compatibility-level-for-sql-server-2008-or-2005-.. http://www.mydigitallife.info/2009/05/17/how-to-set-compatibility-level-for-sql-server-2008-or-2005- .. . . [...] [...]