Domanda

La sperimentazione con le nuove caratteristiche di T-SQL, ho incontrato un puzzle. Ecco qualche nuova sintassi supportata da SQL 2008 e mi aspetto che a lavorare su basi di dati impostati per la modalità di compatibilità 100 (vale a dire 2008) e non il lavoro per la modalità compat 80 (vale a dire 2000). Eppure, questo funziona per un set base di dati per la modalità di compatibilità SQL Server 2000 su un'istanza di SQL 2008 Standard edition:

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
È stato utile?

Soluzione

L'impostazione della modalità di compatibilità è usato per controllare alcuni aspetti (secondo me) relativamente oscuri databae comportamento del motore. Esso non blocca o impedisce l'uso di estensioni al linguaggio T-SQL da essere utilizzato su basi di dati migrati da versioni precedenti - per esempio, un database eseguito il backup da SQL 2000 e ripristinato in SQL 2008 sosterrà CTE ed il nuovo multi dichiarazioni valore INSERISCI.

I dettagli reali di ciò che è controllata dalla modalità di compatibilità del database sono sepolti in diversi articoli nella documentazione in linea; questo è un buon punto di partenza per la ricerca di questo.

Altri suggerimenti

ho notato anche questo, e ha trovato questa dichiarazione su MSDN :

  

Imposta certi comportamenti database da   compatibile con la versione specificata   di SQL Server.

La modalità di compatibilità colpisce "certi" comportamenti, e non tutti i comportamenti. Vedere la ALTER DATABASE documentazione per i dettagli.

non vedo come questo possa funzionare in modalità compat 80. Prova ad aggiungere questa riga prima di creare il tuo tavolo:

sp_dbcmptlevel 'MDS'

Ha ritorno 80?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top