독까의 이야기


Windows OS 업그레이드 테스트를 진행 하였다. 


테스트 환경은 아래와 같다. 


기존 OS 버전 : Windows 2008 R2 

업그레이드 진행 될 상위 OS 버전 : Windows 2012 R2 / Windows 2016


방식 : 윈도우 구동 상태에서 상위 버전 OS 설치 CD 삽입 후 업그레이드 선택으로 진행 한다. 



# 1 

Windows 2008 R2 -> Windows 2012 R2


* 테스트 결과 : 

윈도우 설정 및 설치 된 프로그램 상태 동일 (프로그램 호환성 문제는 발생 할 수 있음)

정품 인증은 초기화 됨 : Windows 2012 R2 키를 새로 입력 해야 함 




* 업그레이드 완료 전 롤백 선택 가능 








# 2 

Windows 2008 R2 -> Windows 2016


* 테스트 결과 : 

윈도우 설정 및 설치 된 프로그램 전부 초기화

OS 를 신규로 설치한 것과 차이가 없음





# 3 

Windows 2012 R2 -> Windows 2016


* 테스트 결과 : 

윈도우 설정 및 설치 된 프로그램 상태 동일 (프로그램 호환성 문제는 발생 할 수 있음)

정품 인증은 초기화 됨 : Windows 2016 키를 새로 입력 해야 함 









# 결론 : OS 업그레이드시 바로 윗 단계 버전으로 진행시에는 기존 설정 유지 가능하나, 두 단계 이상의 버전으로 업그레이드시에는 OS 를 새로 설치하는 것과 동일하다. 프로그램 호환성은 보증 하지 않는다. 


안녕하세요. 


티스토리로 부터 6월 초대장을 수령 하였습니다. 


티스토리 블로그 개설이 필요하신 분들은 방명록 또는 댓글로 이메일 주소 남겨 주시면 발송하도록 하겠습니다. 


등록 유효 기간 : 2018.07.25


마케팅 목적이 아닌, 티스토리 초대장이 꼭 필요하신 분들의 신청 바랍니다. 


신청시 제 블로그 주소 및 닉네임을 포함하여 작성하신 분에게만 발송 하겠습니다. 


감사합니다.


---------------------------------------------------------------------------------------------

6월 초대장 배포 완료 하였습니다. 


2018.07.03 까지 등록이 완료되지 않은 초대장은 재배포 하도록 하겠습니다.

MS-SQL DB 를 이용하는 서버의 CPU 사용량이 100% 가 출력되어 점검을 진행했다.


윈도우에서 성능 모니터에 카운터 추가를 해서 했는데 손이 너무 많이 간다. 


성능 모니터에서 카운터 추가

성능 개체 : Thread

카운터 : % Processor Time / ID Thread 

인스턴스 : sqlservr 리스트 전체 선택

CPU 사용량이 높은 SQL 스레드 ID 확인 : 4280

스레드 ID 로 spid 확인 

SELECT spid, kpid, dbid, cpu, memusage FROM sysprocesses WHERE kpid=4280

SPID : 240

spid 로 쿼리문 확인 

dbcc inputbuffer (240)


이렇게 했는데, 일을 두 번 할 필요는 없으니깐, SSMS 에서 한 번에 확인이 가능한 방법을 검색해서 정리해 보았다. 

SSMS 에 접속, tempdb 에서 새쿼리 실행 후 진행을 한다. 

그러면 tempdb 의 임시 테이블에 해당 테이블이 저장이 되는데, 다 확인하고 나면 맨 하단 drop 명령어로 테이블 제거를 하면 된다. 

use tempdb
CREATE TABLE #sp_who2 (SPID INT,Status VARCHAR(255),
      Login  VARCHAR(255),HostName  VARCHAR(255),
      BlkBy  VARCHAR(255),DBName  VARCHAR(255),
      Command VARCHAR(255),CPUTime INT,
      DiskIO INT,LastBatch VARCHAR(255),
      ProgramName VARCHAR(255),SPID2 INT,
      REQUESTID INT)
INSERT INTO #sp_who2 EXEC sp_who2
SELECT      *
FROM        #sp_who2
-- Add any filtering of the results here :
WHERE       Status = 'RUNNABLE'
-- Add any sorting of the results here :
ORDER BY    CPUTime ASC

CPU 사용량이 높은 spid 가 확인 됐으면, dbcc inputbuffer (SPID) 를 실행하여 쿼리문을 확인하면 된다. 

다 완료 되었으면 아래의 명령어를 통해 임시 테이블을 제거 한다. 

DROP TABLE #sp_who2


# 현재 실행 중인 쿼리문 확인하는 명령어

SELECT
   sqltext.TEXT,
   req.session_id,
   req.status,
   req.command,
   req.cpu_time,
   req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 


위에 생성 된 임시테이블의 select 구문과 현재 실행 중인 쿼리문을 조회하는 실행문을 동시에 실행해서 일치하는 spid 를 찾는 것도 좋은 방법일 것 같다.