programing

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

bestprogram 2023. 4. 27. 22:52

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

버전 #을 얻기 위한 시스템 저장 절차가 있습니까?

해라

SELECT @@VERSION 

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

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

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

@@VERSION 선택

이전 게시물인 것은 알지만 매트 로지쉬가 올린 답변에 언급된 링크(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 20009.00 SQL 200510.00 SQL 200810.50 SQL 2008 R211.00 SQL 201212.00 SQL 2014

여기에 있는 기본 버전 번호 목록 또는 여기에 있는 Microsoft의 전체 목록입니다.

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

exec [master].sys.[xp_msver]
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

다음은 서버가 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년까지 테스트됨).

T-SQL의 이유로 주 버전만 원하는 경우 다음은 2000년 이후 SQL Server 버전의 연도를 제공합니다.

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

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

해라

SELECT @@MICROSOFTVERSION / 0x01000000 AS MajorVersionNumber

자세한 내용은 다음을 참조하십시오.버전/판 정보를 쿼리하는 중

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

사용해 보십시오.

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

사용해 보십시오.

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