Question

J'ai besoin de déterminer par programme si la base de données prend en charge le type de données de géographie et les index spatiaux. Ces fonctionnalités ont été introduites en 2008. Je dois également déterminer si CLR est activée car ces fonctionnalités reposent sur elle. Quelle est la façon la plus fiable de le faire?

Était-ce utile?

La solution

SQL Server 2008 est 10.x

Vous pouvez utiliser Serverproperty en SQL et requête SYS.Configurations

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

Edit: casting ajouté

Autres conseils

analyser ce qui suit:

select @@VERSION

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

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

Comme:

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'

production:

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

(1 row(s) affected)

Vous pouvez utiliser SELECT @@VERSION qui renvoie une chaîne assez verbeuse.

Est plus facile de regarder le niveau de compatibilité DB en utilisant

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

Cela renvoie un numérique. Les valeurs fréquentes sont telles que:

80 = SQL Server 2000

90 = SQL Server 2005

100 = SQL Server 2008

Cela a l'avantage supplémentaire de vérifier que la base de données sur le serveur est au niveau requis, et pas seulement que le serveur lui-même exécutant une version système particulière.

Utilisez la requête mentionnée ci-dessous

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

Pour que les versions mentionnées ci-dessous le découvrent.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top