Как определить SQL Server 2008 или выше
Мне нужно программно определить, поддерживает ли база данных тип данных Geography и пространственные индексы. Эти функции были представлены в 2008 году. Мне также нужно определить, включен ли CLR, поскольку эти функции зависят от него. Какой самый надежный способ сделать это?
4 ответа
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
Разобрать следующее:
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)
Ты можешь использовать SELECT @@VERSION
который возвращает довольно многословную строку.
Проще посмотреть на уровень совместимости БД, используя
select compatibility_level from sys.databases where name=db_name()
Это возвращает число. Частые значения, такие как:
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
Это дает дополнительное преимущество проверки того, что база данных на сервере находится на требуемом уровне, а не только то, что на самом сервере работает конкретная версия системы.
Используйте приведенный ниже запрос
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('EngineEdition') AS EngineEdition;
Для ниже упомянутых версий, чтобы узнать.