Как определить SQL Server 2008 или выше - PullRequest
4 голосов
/ 25 января 2012

Мне нужно программно определить, поддерживает ли база данных тип данных География и Пространственные индексы. Эти функции были представлены в 2008 году. Мне также нужно определить, включен ли CLR, поскольку эти функции зависят от него. Какой самый надежный способ сделать это?

Ответы [ 4 ]

5 голосов
/ 25 января 2012

SQL Server 2008 - 10.x

Вы можете использовать SERVERPROPERTY в SQL и запросить sys.configurations

SELECT
   PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS varchar(20)), 3) AS MajorVersion, 
   value_in_use
FROM 
   sys.configurations
WHERE
   name = 'clr enabled';

Редактировать: добавлено CAST

2 голосов
/ 25 января 2012

разобрать следующее:

select @@VERSION

SELECT * FROM sys.configurations WHERE name = 'clr enabled'

SELECT compatibility_level from sys.databases where name=db_name()

как:

select
    CASE 
        WHEN LEFT(@@VERSION,25)='Microsoft SQL Server 2008' THEN 'Yes' 
        ELSE 'NO' 
    END AS OnSQLServer2008
    ,CASE value
         WHEN 0 THEN 'No'
         ELSE 'Yes'
     END AS [clr_enabled]
    ,(SELECT CASE compatibility_level WHEN 100 then 'Yes' ELSE 'No' END from sys.databases where name=db_name()) AS SQLServer2008CompatibilityMode
    FROM sys.configurations 
    WHERE name = 'clr enabled'

Выход:

OnSQLServer2008 clr_enabled SQLServer2008CompatibilityMode
--------------- ----------- ------------------------------
Yes             No          No

(1 row(s) affected)
0 голосов
/ 25 января 2012

Используйте приведенный ниже запрос

SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('EngineEdition') AS EngineEdition;

Для выяснения ниже упомянутых версий.

enter image description here enter image description here enter image description here enter image description here

0 голосов
/ 25 января 2012

Вы можете использовать SELECT @@VERSION, который возвращает довольно многословную строку.

Проще посмотреть на уровень совместимости БД, используя

select compatibility_level from sys.databases where name=db_name()

Возвращает число. Частые значения, такие как:

80 = SQL Server 2000

90 = SQL Server 2005

100 = SQL Server 2008

Это дает дополнительное преимущество проверки того, что база данных на сервере находится на требуемом уровне, а не только на том, что на самом сервере работает конкретная версия системы.

...