TSQL을 사용하여 데이터베이스의 SQL Server 버전을 어떻게 확인합니까?

StackOverflow https://stackoverflow.com/questions/59444

  •  09-06-2019
  •  | 
  •  

문제

버전 #을 가져오는 시스템 저장 프로시저가 있습니까?

도움이 되었습니까?

해결책

노력하다

SELECT @@VERSION 

또는 SQL Server 2000 이상의 경우 다음을 구문 분석하는 것이 더 쉽습니다. :)

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

에서: http://support.microsoft.com/kb/321185

다른 팁

@@버전 선택

나는 이것이 오래된 게시물이라는 것을 알고 있지만 링크 (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'

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의 전체 목록 여기.

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

버전 정보를 보는 데 사용할 수 있는 또 다른 확장 저장 프로시저가 있습니다.

exec [master].sys.[xp_msver]

다음은 서버가 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

메모 :원래 답변에서 업데이트되었습니다 (댓글 참조)

링크된 KB 기사 조의 포스팅 모든 버전에 어떤 서비스 팩이 설치되어 있는지 확인하는 데 유용합니다.같은 맥락에서, 이 KB 문서 버전 번호를 특정 핫픽스 및 누적 업데이트에 매핑하지만 SQL05 SP2 이상에만 적용됩니다.

이 시도:

if (SELECT LEFT(CAST(SERVERPROPERTY('productversion') as varchar), 2)) = '10'
BEGIN
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

단일 선택으로 주요 SQL Server 버전만 가져오기:

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

보고 8 SQL 2000의 경우, 9 SQL 2005 등의 경우(2012년까지 테스트됨)

노력하다

SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber

자세한 내용은 다음을 참조하세요. 버전/에디션 정보 쿼리 중

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

T-SQL 이유로 인해 주요 버전만 원하는 경우 다음은 2000 이상에 대한 SQL Server 버전의 연도를 제공합니다.

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

이 코드는 다양한 버전의 SQL Server에 대한 추가 공백과 탭을 적절하게 처리합니다.

이 시도:

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

이 시도:

SELECT
    'the sqlserver is ' + substring(@@VERSION, 21, 5) AS [sql version]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top