4

データベースが地理データ型と空間インデックスをサポートしているかどうかをプログラムで判断する必要があります。これらの機能は 2008 年に導入されました。これらの機能は CLR に依存しているため、CLR が有効になっているかどうかも確認する必要があります。これを行うための最も信頼できる方法は何ですか?

4

4 に答える 4

5

SQLServer2008は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を使用できます。

より簡単なのは、を使用してDB互換性レベルを確認することです。

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 に答える