Pergunta

Experimentando novos recursos do T-SQL, encontrei um quebra-cabeça. Aqui está uma nova sintaxe suportada pelo SQL 2008 e eu esperaria que funcionasse em bancos de dados definidos para o modo de compatibilidade 100 (ou seja, 2008) e não funcione no modo Compat 80 (ou seja, 2000). No entanto, isso funciona para um conjunto de banco de dados para o modo de compatibilidade do SQL Server 2000 em uma instância SQL 2008 da edição padrão:

use MDS    -- this db is compat mode 80
go
CREATE TABLE dbo.Employees
(
Name VARCHAR(50) NULL,
Email VARCHAR(50) NULL,
Salary money NULL
) 
INSERT INTO dbo.Employees(Name, Email, Salary)
VALUES('Scott', 'scott@example.com', 50000.00),
  ('Jisun', 'jisun@example.com', 225000.00),
  ('Alice', 'al@example.com', 75000.00),
  ('Sam', 'sam@example.com', 45000.00)

SELECT * FROM dbo.Employees  
drop table dbo.Employees
Foi útil?

Solução

A configuração do modo de compatibilidade é usada para controlar certos aspectos relativamente obscuros (IMHO) do comportamento do mecanismo de banco de dados. Ele não bloqueia ou impede que o uso de extensões para o idioma T-SQL seja usado em bancos de dados migrados de versões anteriores-por exemplo, um banco de dados apoiado no SQL 2000 e restaurado no SQL 2008 suportará CTEs e o novo Multi- Declarações de inserção de valor.

Os detalhes reais do que é controlado pelo modo de compatibilidade do banco de dados estão enterrados em vários artigos em livros on -line; isto é um bom ponto de partida para pesquisar isso.

Outras dicas

Eu notei isso também e encontrei Esta declaração no MSDN:

Define determinados comportamentos do banco de dados como compatíveis com a versão especificada do SQL Server.

O modo de compatibilidade afeta "certos" comportamentos, e nem todos os comportamentos. Veja o Alter documentação do banco de dados para detalhes.

Não vejo como isso pode funcionar no modo Compat 80. Tente adicionar esta linha antes de criar sua tabela:

sp_dbcmptlevel 'MDS'

Ele retorna 80?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top