Database/MSSQL 7

MSSQL systemdb 파일 이전, 경로 변경하기

--Master DB 경로 변경 1. 시작 매개변수를 바꿀 경로로 설정하고, DB shutdown 후에 물리적 이전 --modelDB 경로 변경 1. 아래 쿼리를 실행 후 DB 정지 후 물리적 이전 use master; Go ALTER DATABASE model MODIFY FILE (NAME = modeldev, FILENAME = 'D:\mssql\MSSQL.1MSSQL\Data\model.mdf'); Go ALTER DATABASE model MODIFY FILE (NAME = modellog, FILENAME = 'D:\mssql\MSSQL.1\MSSQL\Data\modellog.ldf'); Go --msdbDB 경로 변경 1. 아래 쿼리를 실행 후 DB 정지 후 물리적 이전 use master;..

Database/MSSQL 2022.02.22

DBCC CHECKDB

Error 확인 USE [카탈로그명]; GO DBCC CHECKDB NO_INFOMSGS; DBCC CHECKDB NO_INFOMSGS CHECKDB 후 단순 정보 메세지가 나오는 것을 방지한다. (serverity level 10 이상만 보여줌) DBCC CHECKDB TBLOCK CHECKDB 시 DB 스냅샷을 생성하는데 이 작업을 하지 않고 임시 exclusive lock을 걸어 체크한다. 장점 : CHECKDB 소요시간을 줄여준다. 단전 : 다른 프로세스와 경합이 발생한다. System table metadata와 service broker validation 체크는 하지 않는다. DBCC CHECKDB PHYSICAL_ONLY 시스템 카탈로그, 모든 테이블의 각 페이지를 체크한다. DBCC CH..

Database/MSSQL 2022.02.07

MSSQL Msg 22050 오류

Msg 22050, Level 16, State 1, Line 0 Failed to initialize sqlcmd library with error number -2147467259 메세지 22050, 수준 16, 상태1, 줄 0 -2147467259 오류로 인해 sqlcmd 라이브러리를 초기화하지 못했습니다. msdb.dbo.sp_sendmail sp 실행 시 @query 실행 시 변수가 포함된 dynamic 쿼리가 실행 되서 발생한 에러 였음. ex) SET @query = 'select @date as date, id from table' 실제 Trace를 실행하면 msdb.dbo.sp_sendmail 실행 시 @query 부분과 sp_sendmail이 다른 SPID로 실행되는 것을 확인할 수 있..

Database/MSSQL 2019.05.02

Index Fragmentation

아래 내역은 Pro SQL Server Internals 의 내용과 google 검색 이미지를 추가, 편집한 내용입니다. What's the Index Fragmentation? 인덱스 정보가 조각화 되어 Key 값을 기준으로 인덱스의 논리적 페이지 순서가 데이터 파일 내의 물리적 순서와 일치 하지 않음 심하게 조각화된 인덱스는 Query 성능을 저하시키고 Application 응답을 늦출 수 있음 Type of Fragmentation Internal Fragmentation : Data pages in the index have an excessive amount of free space. 실제 사용량 보다 더 많은 공간이 할당 되었을 경우 It increases number of logical re..

Database/MSSQL 2019.04.12

Plan Cache

Query Optimization 는 CPU load를 일으킬 수 있는 리소스에 영향을 많이 받는 프로세스 Caching Plan으로 이 영향을 줄일 수 있음 Compiled plan : 전체 배치와 배치의 각 statement에 대한 plan Execution plan : Query 가 실행될 때마다 Compiled Plan으로 부터 생성 * Execution plan은 runtime마다 실행되기 때문에 각 query 실행 마다 다르다. 만약 여러 개의 세션을 같은 compiled plan으로 실행한다면 세션마다 각각 execution plan이 생성된다. Plan Chache는 memory를 사용하기 때문에 buffer pool 사이즈를 줄일 수 있다. 다시말하면 physical read 가 늘어나서..

Database/MSSQL 2019.03.28