2009-10-01 3 views
41

Secondo BOL (linea di SQL Server) su sp_dbcmptlevel,
Come verificare la compatibilità del database SQL Server dopo che sp_dbcmptlevel è deprecato?

Questa funzionalità verrà rimossa in una versione futura di Microsoft SQL Server. Non utilizzare questa funzione in un nuovo lavoro di sviluppo e modificare le applicazioni che attualmente utilizzano questa funzione il prima possibile. Utilizzare invece il livello di compatibilità ALTER DATABASE.

Ora, l'unico modo TSQL che conosco per verificare la compatibilità del database è tramite sp_dbcmptlevel. Per quanto ne so, ALTER DATABASE Compatibility Level è solo per impostazione il livello di compatibilità, non ottenere informazioni.

Come si dovrebbe ottenere il livello di compatibilità senza utilizzare la GUI?

risposta

80
select name, compatibility_level , version_name = 
CASE compatibility_level 
    WHEN 65 THEN 'SQL Server 6.5' 
    WHEN 70 THEN 'SQL Server 7.0' 
    WHEN 80 THEN 'SQL Server 2000' 
    WHEN 90 THEN 'SQL Server 2005' 
    WHEN 100 THEN 'SQL Server 2008/R2' 
    WHEN 110 THEN 'SQL Server 2012' 
    WHEN 120 THEN 'SQL Server 2014' 
    WHEN 130 THEN 'SQL Server 2016' 
    WHEN 140 THEN 'SQL Server 2017' 
    ELSE 'new unknown - '+CONVERT(varchar(10),compatibility_level) 
END 
from sys.databases 
+0

Vorrei aggiungere che è possibile risolvere questo problema aprendo SQL Server Profiler e vedere cosa fa Management Studio. Ho appena avuto uno sguardo e all'interno di una query piuttosto lunga e mal formattata utilizza anche sys.databases – MikeKulls

+1

'select cmptlevel da master.dbo.sysdatabases dove name = nome_db()' per SQL2000 +, non è sicuro quando questo andrà via. –

14
select compatibility_level from sys.databases where name ='myDB' 
5

pensato che questo sarebbe utile qui ...

65 = SQL Server 6.5 
70 = SQL Server 7.0 
80 = SQL Server 2000 
90 = SQL Server 2005 
100 = SQL Server 2008/R2 
110 = SQL Server 2012 
120 = SQL Server 2014 
130 = SQL Server 2016 
1

- - per cambiarlo

EXEC sp_dbcmptlevel 'db_name', 130