IT박스

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

itboxs 2020. 7. 8. 08:06
반응형

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


버전 번호를 얻는 시스템 저장 프로 시저가 있습니까?


시험

SELECT @@VERSION 

또는 SQL Server 2000 이상에서는 다음과 같이 구문 분석하기가 더 쉽습니다. :)

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

보낸 사람 : http://support.microsoft.com/kb/321185


@@ VERSION 선택


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

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

참고 : 원래 답변에서 업데이트되었습니다 (주석 참조)


Joe의 게시물에 링크 된 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

8SQL 2000, 9SQL 2005 등을 반환 합니다 (2012 년까지 테스트).


시험

SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber

For more information see: Querying for version/edition info


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

If all you want is the major version for T-SQL reasons, the following gives you the year of the SQL Server version for 2000 or later.

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

This code gracefully handles the extra spaces and tabs for various versions of SQL Server.


Try this:

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

Try this:

SELECT
    'the sqlserver is ' + substring(@@VERSION, 21, 5) AS [sql version]

참고URL : https://stackoverflow.com/questions/59444/how-do-you-check-what-version-of-sql-server-for-a-database-using-tsql

반응형