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.

  1. 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;

  2. 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;

  3. 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.


One Response to “How to Set Compatibility Level for SQL Server 2008 or 2005 Database” Uma resposta para "Como definir Nível de compatibilidade para o SQL Server 2008 ou 2005 Database"

  1. Microsoft – SQL Server – Strategies for addressing the Issue of deprecated SQL « Daniel Adeniji's Trail Microsoft - SQL Server - Estratégias para abordar a questão da fuga preterido SQL «Adeniji Daniel's
    August 14th, 2009 03:17 14 de agosto de 2009 03:17
    1 1

    [...] 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- .. . . [...] [...]

Leave a Reply Deixe uma Resposta

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> Você pode usar estas tags: href="" citar=""> <b> <blockquote citar=""> <code> <del datetime = "">> <i> <q do <strike> <strong>

Subscribe to comments feature has been disabled. Subscrever aos comentários recurso foi desativado. To receive notification of latest comments posted, subscribe to Para receber notificação de comentários mais recentes postadas, inscrever-se My Digital Life Comments RSS feed My Digital Life Comentários RSS feed or ou register to receive Registre-se para receber new comments in daily email digest. novos comentários no e-mail diário sumário.
Custom Search

New Articles Novos Artigos

Incoming Search Terms for the Article Chegado Procurar Termos para o Artigo

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. - -- sql server compatibility level nível de compatibilidade do SQL Server - -- sql server 2008 compatibility mode SQL Server 2008 modo de compatibilidade - -- sql 2008 compatibility mode Modo de compatibilidade SQL 2008 - -- compatibility level sql server nível de compatibilidade do SQL Server - -- SQL compatibility level SQL nível de compatibilidade - -- sql compatibility mode Modo de compatibilidade SQL - -- 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, 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 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. - -- SET COMPATIBILITY_LEVEL SET COMPATIBILITY_LEVEL - -- the option 100 for compatibility mode is not supported 100 para a opção modo de compatibilidade não é suportado - -- database compatibility mode is set to 90 modo de compatibilidade do banco de dados está definido para 90 - -- sql 2005 compatibility mode Modo de compatibilidade SQL 2005 - -- sql server 2005 compatibility level SQL Server 2005 nível de compatibilidade - -- sql 2005 compatibility level nível de compatibilidade do SQL 2005 - -- 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 mesmo em modos de retro-compatibilidade - -- all todos - -- sql 2008 compatibility level nível de compatibilidade do SQL 2008 - -- database compatibility level nível de compatibilidade do banco de dados - -- sql compatibility mode 80 Modo de compatibilidade SQL 80 - -- sql 2008 compatibility compatibilidade sql 2008 - -- sql server 2008 backward compatibility SQL Server 2008 compatibilidade com versões anteriores - -- set compatibility_level option of alter database compatibility_level definir a opção de alterar a base de dados - -- sql server compatibility mode Modo de compatibilidade SQL Server - -- how to set compatibility level in sql server 2005 como definir o nível de compatibilidade no SQL Server 2005 - -- "The option 100 for compatibility mode is not supported" "A opção de 100 para o modo de compatibilidade não é suportado" - -- set compatibility level sql 2005 definir o nível de compatibilidade do SQL 2005 - -- compatibility_level sql server SQL Server compatibility_level - -- sql server 2008 compatibility level SQL Server 2008 nível de compatibilidade - -- 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. - -- sql server 2008 2005 compatibility mode SQL Server 2008 2005 modo de compatibilidade - -- compatibility level sql server 2008 nível de compatibilidade do SQL Server 2008 - -- 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. - -- change sql server compatibility level alteração do nível de compatibilidade do SQL Server - -- 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 Recomenda-se vivamente para reescrever a consulta - -- sql server 2008 compatibility SQL Server 2008 compatibilidade - -- sql server 2008 compatibility mode 80 Modo de compatibilidade SQL Server 2008 80 - -- sql server set compatibility level SQL Server definir o nível de compatibilidade - -- sql server compatibility levels níveis de compatibilidade SQL Server - -- PLEASE SET THE COMPATIBILITY LEVEL FOR CURRENT DATABASE TO 80 OR lower Defina o nível de compatibilidade para o banco de dados atual para 80 ou menor - -- To run this query without modification, please set the compatibility level for current database to 80 Para executar esta consulta sem modificações, por favor, defina o nível de compatibilidade de banco de dados atual para 80 - -- sql command change compatible 6.5 7 sql alterar o comando compatível 6,5 7 - -- please set the compatibility level for current database to 80 por favor, defina o nível de compatibilidade de banco de dados atual para 80 - -- sql server compatability level nível de compatibilidade do SQL Server - -- compatibility level nível de compatibilidade - -- SQL server 7.0 compatibility Compatibilidade SQL Server 7.0 - -- sql backward compatibility with 2008 compatibilidade com versões anteriores do SQL 2008 - -- compatibility mode SQL server 2008 modo de compatibilidade do SQL Server 2008 - -- compatibility MODE 100 IN SQL SERVER 2008 DB 100 modo de compatibilidade no SQL Server 2008 PO - -- SQLSERVER compatibility level SQLSERVER nível de compatibilidade - -- sql set compatibility mode Modo de compatibilidade SQL SET - --