4

我需要以编程方式确定数据库是否支持地理数据类型和空间索引。这些功能是在 2008 年引入的。我还需要确定是否启用了 CLR,因为这些功能依赖于它。最可靠的方法是什么?

4

4 回答 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 @@VERSIONwhich 返回一个相当详细的字符串。

更容易使用来查看数据库兼容性级别

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 回答