답변:
역순으로 답변하려면
SQL Server 수준을 식별하는 데 사용하는 두 가지 쿼리가 있습니다.
첫 번째는 @@ version 입니다. 이것에 대한 좋은 점은 OS 레벨 정보를 다시 가져 오는 것입니다. 그것에 대한 도전은 텍스트의 큰 덤프이며 관련 비트를 찾기 위해 구문 분석해야한다는 것입니다.
예 :
SELECT @@version;
/*
Microsoft SQL Server 2014 - 12.0.4416.0 (X64)
Jun 11 2015 19:18:41
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
*/
ServerProperties
요소를 개별적으로 식별 할 수 있으므로 선호 합니다.
SELECT
SERVERPROPERTY('productversion') AS ProductVersion
, SERVERPROPERTY ('productlevel') AS ProductLevel
, SERVERPROPERTY ('edition') AS Edition;
/*
ProductVersion ProductLevel Edition
12.0.4416.0 SP1 Developer Edition (64-bit)
*/
내가 아는 것은 없습니다. 호스트 OS에 Windows Update 서비스가 실행 중이고 누군가 "다른 MS 제품 용 패치 포함"을 지정한 경우 SQL Server 용 패치가 설치 될 수 있습니다.
그러나 전문가라면 WSUS에 패치가 표시되기를 기다리거나 패치가 환경에 적합한 지 확인하고 싶을 것입니다. 여기에는 KB (기술 자료) 기사와 테스트가 포함됩니다.
제품에 내장 된 것이 없기 때문에 sqlserverbuilds.blogspot.com을 참조하고 있습니다. 그러나 다음과 같은 동일한 통합 패치 목록을 제공하려는 다른 사이트가 많이 있습니다.
해당 블로그에서 데이터를 가져 와서 dbo.PatchLevel보기로 변환했습니다. 이보기에는 모든 패치가 표시됩니다. 이보기는 2016 년과 2014 년에만 적용되도록 잘 리며, 그렇지 않으면 답변의 글자 수 한도를 불었습니다.
CREATE VIEW dbo.PatchLevel
AS
-- data from http://sqlserverbuilds.blogspot.com
WITH SRC(Build,[File version],[KB / Description],[Release Date], SimpleVersion) AS
(
SELECT
CASE LEN(D.Build) - LEN(REPLACE(D.Build, '.', ''))
WHEN 3 THEN REPLACE(D.Build, '.00.', '.0.')
WHEN 2 THEN REPLACE(D.Build, '.00.', '.0.') + '.0'
END AS Build
, D.FileVersion
, D.KB
, CAST(REPLACE(D.ReleaseDate, ' *new', '') AS date) AS ReleaseDate
, CAST(LEFT(D.Build, 4) AS decimal(4,2))
FROM
(
VALUES
('13.00.500.53','2016.130.500.53','Microsoft SQL Server 2016 Community Technology Preview 2.3 (CTP2.3)','August 28, 2015 *new')
, ('13.00.407.1','2016.130.407.1','Microsoft SQL Server 2016 Community Technology Preview 2.2 (CTP2.2)','July 23, 2015')
, ('13.00.400.91','2016.130.400.91','Microsoft SQL Server 2016 Community Technology Preview 2.2 (CTP2.2) [withdrawn]','July 22, 2015')
, ('13.00.300.44','2016.130.300.444','Microsoft SQL Server 2016 Community Technology Preview 2.1 (CTP2.1)','June 24, 2015')
, ('13.00.200.172','2016.130.200.172','Microsoft SQL Server 2016 Community Technology Preview 2 (CTP2)','May 27, 2015')
, ('12.00.4427','2014.120.4427.24','3094221 Cumulative update package 3 (CU3) for SQL Server 2014 Service Pack 1','October 21, 2015 *new')
, ('12.00.4422','2014.120.4422.0','3075950 Cumulative update package 2 (CU2) for SQL Server 2014 Service Pack 1','August 17, 2015')
, ('12.00.4416','2014.120.4416.0','3067839 Cumulative update package 1 (CU1) for SQL Server 2014 Service Pack 1','June 22, 2015')
, ('12.00.4213','2014.120.4213.0','MS15-058: Description of the nonsecurity update for SQL Server 2014 Service Pack 1 GDR: July 14, 2015','July 14, 2015')
, ('12.00.4100','2014.120.4100.1','SQL Server 2014 Service Pack 1 (SP1)','May 14, 2015')
, ('12.00.4050','2014.120.4050.0','SQL Server 2014 Service Pack 1 (SP1) [withdrawn]','April 15, 2015')
, ('12.00.2556','2014.120.2556.4','3094220 Cumulative update package 10 (CU10) for SQL Server 2014','October 20, 2015 *new')
, ('12.00.2553','2014.120.2553.0','3075949 Cumulative update package 9 (CU9) for SQL Server 2014','August 17, 2015')
, ('12.00.2548','2014.120.2548.0','MS15-058: Description of the security update for SQL Server 2014 QFE: July 14, 2015','July 14, 2015')
, ('12.00.2546','2014.120.2546.0','3067836 Cumulative update package 8 (CU8) for SQL Server 2014','June 22, 2015')
, ('12.00.2506','2014.120.2506.0','3063054 Update enables Premium Storage support for Data files on Azure Storage and resolves backup failures','May 19, 2015')
, ('12.00.2505','2014.120.2505.0','3052167 FIX: Error 1205 when you execute parallel query that contains outer join operators in SQL Server 2014','May 19, 2015')
, ('12.00.2504','2014.120.2504.0','2999809 FIX: Poor performance when a query contains table joins in SQL Server 2014','May 5, 2015')
, ('12.00.2504','2014.120.2504.0','3058512 FIX: Unpivot Transformation task changes null to zero or empty strings in SSIS 2014','May 5, 2015')
, ('12.00.2495','2014.120.2495.0','3046038 Cumulative update package 7 (CU7) for SQL Server 2014','April 23, 2015')
, ('12.00.2488','2014.120.2488.0','3048751 FIX: Deadlock cannot be resolved automatically when you run a SELECT query that can result in a parallel batch-mode scan','April 1, 2015')
, ('12.00.2485','2014.120.2485.0','3043788 An on-demand hotfix update package is available for SQL Server 2014','March 16, 2015')
, ('12.00.2480','2014.120.2480.0','3031047 Cumulative update package 6 (CU6) for SQL Server 2014','February 16, 2015')
, ('12.00.2474','2014.120.2474.0','3034679 FIX: AlwaysOn availability groups are reported as NOT SYNCHRONIZING','May 15, 2015')
, ('12.00.2472','2014.120.2472.0','3032087 FIX: Cannot show requested dialog after you connect to the latest SQL Database Update V12 (preview) with SQL Server 2014','January 28, 2015')
, ('12.00.2464','2014.120.2464.0','3024815 Large query compilation waits on RESOURCE_SEMAPHORE_QUERY_COMPILE in SQL Server 2014','January 5, 2015')
, ('12.00.2456','2014.120.2456.0','3011055 Cumulative update package 5 (CU5) for SQL Server 2014','December 18, 2014')
, ('12.00.2436','2014.120.2436.0','3014867 FIX: "Remote hardening failure" exception cannot be caught and a potential data loss when you use SQL Server 2014','November 27, 2014')
, ('12.00.2430','2014.120.2430.0','2999197 Cumulative update package 4 (CU4) for SQL Server 2014','October 21, 2014')
, ('12.00.2423','2014.120.2423.0','3007050 FIX: RTDATA_LIST waits when you run natively stored procedures that encounter expected failures in SQL Server 2014','October 22, 2014')
, ('12.00.2405','2014.120.2405.0','2999809 FIX: Poor performance when a query contains table joins in SQL Server 2014','September 25, 2014')
, ('12.00.2402','2014.120.2402.0','2984923 Cumulative update package 3 (CU3) for SQL Server 2014','August 18, 2014')
, ('12.00.2381','2014.120.2381.0','2977316 MS14-044: Description of the security update for SQL Server 2014 (QFE)','August 12, 2014')
, ('12.00.2370','2014.120.2370.0','2967546 Cumulative update package 2 (CU2) for SQL Server 2014','June 27, 2014')
, ('12.00.2342','2014.120.2342.0','2931693 Cumulative update package 1 (CU1) for SQL Server 2014','April 21, 2014')
, ('12.00.2269','2014.120.2269.0','3045324 MS15-058: Description of the security update for SQL Server 2014 GDR: July 14, 2015','July 14, 2015')
, ('12.00.2254','2014.120.2254.0','2977315 MS14-044: Description of the security update for SQL Server 2014 (GDR)','August 12, 2014')
, ('12.00.2000','2014.120.2000.8','SQL Server 2014 RTM','April 1, 2014')
, ('12.00.1524','2014.120.1524.0','Microsoft SQL Server 2014 Community Technology Preview 2 (CTP2)','October 15, 2013')
) D(Build,FileVersion,KB,ReleaseDate)
)
SELECT
SRC.Build
, SRC.[File version]
, SRC.[KB / Description]
, SRC.[Release Date]
, SRC.SimpleVersion
FROM
SRC;
GO
두 번째보기, 예 중첩보기-나쁜 날, dbo.MyPatchLevel은 위의 버전 데이터를 사용하여 현재 인스턴스와 비교하고 출력을 생성하여 얼마나 나쁜지 알려줍니다.
CREATE VIEW dbo.MyPatchLevel
AS
WITH MostRecentBuild AS
(
SELECT
SRC.Build
, SRC.[Release Date]
, SRC.SimpleVersion
, SRC.[KB / Description]
FROM
dbo.PatchLevel AS SRC
WHERE
SRC.[Release Date] =
(
SELECT
MAX(SRCI.[Release Date])
FROM
dbo.PatchLevel AS SRCI
WHERE
SRCI.SimpleVersion = SRC.SimpleVersion
)
AND
SRC.Build =
(
SELECT
MAX(SRCI.Build)
FROM
dbo.PatchLevel AS SRCI
WHERE
SRCI.SimpleVersion = SRC.SimpleVersion
AND SRCI.[Release Date] = SRC.[Release Date]
)
)
, MyVersion AS
(
SELECT
SRC.Build
, SRC.[File version]
, MRB.[KB / Description]
, SRC.[Release Date]
, D.ProductVersion
, D.ProductLevel
, D.Edition
, D.Version
, SRC.SimpleVersion
, MRB.Build AS MostRecentBuild
, MRB.[Release Date] AS MostRecentReleaseDate
FROM
dbo.PatchLevel AS SRC
INNER JOIN
(
SELECT
SERVERPROPERTY('productversion') AS ProductVersion
, SERVERPROPERTY ('productlevel') AS ProductLevel
, SERVERPROPERTY ('edition') AS Edition
, @@VERSION AS Version
)D
ON D.ProductVersion = SRC.Build
INNER JOIN
MostRecentBuild AS MRB
ON MRB.SimpleVersion = SRC.SimpleVersion
)
SELECT
MV.ProductVersion AS CurrentVersion
, MV.MostRecentBuild
, MV.[Release Date]
, MV.MostRecentReleaseDate
, DATEDIFF(DAY, MV.[Release Date], MV.MostRecentReleaseDate) AS DaysSincePatchAvailable
, MV.[File version]
, MV.ProductLevel
, MV.[KB / Description] AS [Most Recent KB / Description]
, MV.Edition
, MV.Version
, MV.SimpleVersion
, CAST(SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS sysname) AS Server
, CAST(SERVERPROPERTY('InstanceName') AS sysname) AS Instance
, CAST(SERVERPROPERTY('ServerName') AS sysname) AS ServerName
FROM
MyVersion AS MV;
GO
나는 같은 쿼리를 사용할 것이다
SELECT
MPL.CurrentVersion
, MPL.MostRecentBuild
, MPL.[Release Date]
, MPL.MostRecentReleaseDate
, MPL.DaysSincePatchAvailable
, MPL.[Most Recent KB / Description]
FROM
dbo.MyPatchLevel AS MPL;
결과
CurrentVersion MostRecentBuild Release Date MostRecentReleaseDate DaysSincePatchAvailable Most Recent KB / Description
12.0.4416.0 12.0.4422.0 2015-06-22 2015-08-17 56 3075950 Cumulative update package 2 (CU2) for SQL Server 2014 Service Pack 1
이 쿼리 결과로 무장 한 나는 최신 패치 여부, 패치 이후의 시간 및 현재 패치 상태에서 KB를 읽어야하는 것을 알고 있습니다.
스크립트는 github 에서도 호스팅됩니다