TSQLを使用してデータベースのSQL Serverのバージョンを確認するにはどうすればよいですか?


回答:


234

試す

SELECT @@VERSION 

またはSQL Server 2000以降では、次の方が解析が簡単です:)

SELECT SERVERPROPERTY('productversion')
     , SERVERPROPERTY('productlevel')
     , SERVERPROPERTY('edition')

送信元:http : //support.microsoft.com/kb/321185


1
2番目のものは私にとってはうまくいきます。8.00.xxがSQLサーバー2000を意味することを理解するためにウィキペディアをチェックします
pdem


28

私はこれが古い投稿であることを知っていますが、Matt Rogishによって投稿された回答に記載されているリンク(2013-12-03の時点で無効)にあるコードを更新しました。

DECLARE @ver nvarchar(128)
SET @ver = CAST(serverproperty('ProductVersion') AS nvarchar)
SET @ver = SUBSTRING(@ver, 1, CHARINDEX('.', @ver) - 1)

IF ( @ver = '7' )
   SELECT 'SQL Server 7'
ELSE IF ( @ver = '8' )
   SELECT 'SQL Server 2000'
ELSE IF ( @ver = '9' )
   SELECT 'SQL Server 2005'
ELSE IF ( @ver = '10' )
   SELECT 'SQL Server 2008/2008 R2'
ELSE IF ( @ver = '11' )
   SELECT 'SQL Server 2012'
ELSE IF ( @ver = '12' )
   SELECT 'SQL Server 2014'
ELSE IF ( @ver = '13' )
   SELECT 'SQL Server 2016'
ELSE IF ( @ver = '14' )
   SELECT 'SQL Server 2017'
ELSE
   SELECT 'Unsupported SQL Server Version'

14

SQL Server 2000以降では、Joeの回答を次のように解析することをお勧めします。

declare @sqlVers numeric(4,2)
select @sqlVers = left(cast(serverproperty('productversion') as varchar), 4)

次のような結果が得られます。

結果サーバーのバージョン
8.00 SQL 2000
9.00 SQL 2005
10.00 SQL 2008
10.50 SQL 2008R2
11.00 SQL 2012
12.00 SQL 2014

バージョン番号の基本的なリストここでは、またはMicrosoftからの完全なリストここに


私はこれが好きで、サーバーのバージョンをまたいで簡単に再利用できます。上記の少し変更したバージョンを使用しましたselect cast(serverproperty('productversion') as varchar) as [result]。私のポイントは、ADO.NETを介して上記を実行しExecuteScalar、結果の文字列をSystem.Versionオブジェクトとして解析できることです。また、それを数値に変換すると、末尾のゼロとバージョンセグメントの桁数に関してバージョン番号に異なる意味が与えられますが、文字列はVersion、各バージョンコンポーネントの一貫性を失うことなく、有効なオブジェクトに解析できます。
Ivaylo Slavov

4
CREATE FUNCTION dbo.UFN_GET_SQL_SEVER_VERSION 
(
)
RETURNS sysname
AS
BEGIN
    DECLARE @ServerVersion sysname, @ProductVersion sysname, @ProductLevel sysname, @Edition sysname;

    SELECT @ProductVersion = CONVERT(sysname, SERVERPROPERTY('ProductVersion')), 
           @ProductLevel = CONVERT(sysname, SERVERPROPERTY('ProductLevel')),
           @Edition = CONVERT(sysname, SERVERPROPERTY ('Edition'));
    --see: http://support2.microsoft.com/kb/321185
    SELECT @ServerVersion = 
        CASE 
            WHEN @ProductVersion LIKE '8.00.%' THEN 'Microsoft SQL Server 2000'
            WHEN @ProductVersion LIKE '9.00.%' THEN 'Microsoft SQL Server 2005'
            WHEN @ProductVersion LIKE '10.00.%' THEN 'Microsoft SQL Server 2008'
            WHEN @ProductVersion LIKE '10.50.%' THEN 'Microsoft SQL Server 2008 R2'
            WHEN @ProductVersion LIKE '11.0%' THEN 'Microsoft SQL Server 2012'
            WHEN @ProductVersion LIKE '12.0%' THEN 'Microsoft SQL Server 2014'
        END

    RETURN @ServerVersion + N' ('+@ProductLevel + N'), ' + @Edition + ' - ' + @ProductVersion;

END
GO

3

サーバーが2005以降かどうかをテストするために使用するスクリプトの一部を以下に示します

declare @isSqlServer2005 bit
select @isSqlServer2005 = case when CONVERT(int, SUBSTRING(CONVERT(varchar(15), SERVERPROPERTY('productversion')), 0, CHARINDEX('.', CONVERT(varchar(15), SERVERPROPERTY('productversion'))))) < 9 then 0 else 1 end
select @isSqlServer2005

注:元の回答から更新されました(コメントを参照)


「10」が「9」より小さいため、これはSQL 2008では機能しません。更新された回答の値を変更して、8、9、10または最小値としてテストする必要があるものを使用することができます
Bruce Chapman

3

バージョン情報を確認するために使用できる別の拡張ストアドプロシージャがあります。

exec [master].sys.[xp_msver]

2

Joeの投稿にリンクされているKB記事は、どのバージョンのどのService Packがインストールされているかを判断するのに最適です。これらの同じ行に沿って、このKB記事はバージョン番号を特定の修正プログラムと累積的な更新にマップしますが、SQL05 SP2以降にのみ適用されます。


1

これを試して:

if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN

1
SELECT 
@@SERVERNAME AS ServerName,
CASE WHEN LEFT(CAST(serverproperty('productversion') as char), 1) = 9 THEN '2005'
 WHEN LEFT(CAST(serverproperty('productversion') as char), 2) = 10 THEN '2008'
 WHEN LEFT(CAST(serverproperty('productversion') as char), 2) = 11 THEN '2012'
END AS MajorVersion,
SERVERPROPERTY ('productlevel') AS MinorVersion, 
SERVERPROPERTY('productversion') AS FullVersion, 
SERVERPROPERTY ('edition') AS Edition

1

1回の選択でSQL Serverのメジャーバージョンのみを取得する:

SELECT  SUBSTRING(ver, 1, CHARINDEX('.', ver) - 1)
FROM (SELECT CAST(serverproperty('ProductVersion') AS nvarchar) ver) as t

8SQL 2000の場合9、SQL 2005の場合など(2012年までテスト済み)を返します。



1
select substring(@@version,0,charindex(convert(varchar,SERVERPROPERTY('productversion')) ,@@version)+len(convert(varchar,SERVERPROPERTY('productversion')))) 

0

T-SQLの理由で必要なのがメジャーバージョンだけの場合は、2000年以降のSQL Serverバージョンの年を次に示します。

SELECT left(ltrim(replace(@@Version,'Microsoft SQL Server','')),4)

このコードは、SQL Serverのさまざまなバージョンの余分なスペースとタブを適切に処理します。


0

これを試して:

SELECT @@VERSION[server], SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

-1

これを試して:

SELECT
    'the sqlserver is ' + substring(@@VERSION, 21, 5) AS [sql version]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.