我需要以编程方式确定数据库是否支持地理数据类型和空间索引。这些功能是在 2008 年引入的。我还需要确定是否启用了 CLR,因为这些功能依赖于它。最可靠的方法是什么?
问问题
755 次
4 回答
5
SQL Server 2008 是 10.x
您可以在 SQL 中使用SERVERPROPERTY并查询sys.configurations
SELECT
PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS varchar(20)), 3) AS MajorVersion,
value_in_use
FROM
sys.configurations
WHERE
name = 'clr enabled';
编辑:添加 CAST
于 2012-01-25T16:49:11.807 回答
2
解析以下内容:
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)
于 2012-01-25T16:45:09.650 回答
0
您可以使用SELECT @@VERSION
which 返回一个相当详细的字符串。
更容易使用来查看数据库兼容性级别
select compatibility_level from sys.databases where name=db_name()
这将返回一个数字。常见的值如下:
80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008
这具有检查服务器上的数据库是否处于所需级别的额外好处,而不仅仅是运行特定系统版本的服务器本身。
于 2012-01-25T16:50:29.190 回答
0
使用下面提到的查询
SELECT
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel,
SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('EngineEdition') AS EngineEdition;
要找出下面提到的版本。
于 2012-01-25T17:19:03.743 回答