본문 바로가기

Programming/MSSQL43

MSSQL 데이터 타입 크기 (DATA TYPE SIZE) MSSQL 데이터 타입과 크기이다. int, bigint, smallint 및 tinyint 데이터 형식범위저장소bigint-2^63(-9,223,372,036,854,775,808) ~ 2^63-1(9,223,372,036,854,775,807)8바이트int-2^31(-2,147,483,648) ~ 2^31-1(2,147,483,647)4바이트smallint-2^15(-32,768) ~ 2^15-1(32,767)2바이트tinyint 0 ~ 2551바이트 decimal 및 numeric전체 자릿수저장소 크기(바이트)1 - 9510-19920-281329-3817 money 및 smallmoney데이터 형식범위저장소money-922,337,203,685,477.5808~922,337,203,685,477... 2018. 4. 24.
MSSQL 현재 실행중인 쿼리, LOCK 세션, ACTIVE 세션, KILL 세션 MSSQL DBA라면 DB 서버가 갑자기 CPU가 튀거나 메모리를 많이 차지하는 쿼리를 찾아서 KILL 시켜야 하는 경우가 있다.운영 DB인 경우에는 KILL시키기는 조금 애매하지만 OLAP 같은 BACK 단 서비스의 경우에는 가차없이 KILL을 시켜서 서비스의 품질을 높이는 것이 먼저라고 생각한다. 다음은 MSSQL에서 현재 실행중인 쿼리를 찾는 쿼리이다. 현재 실행중인 쿼리현재 수행중인 쿼리를 찾아서 어떠한 쿼리가 날아가고 있는지만 확인해도 DBA라면 대충은 무거운 쿼리인지 얼마나 걸릴 쿼리인지, 죽여야할 쿼리인지 정도는 예측할 수 있다, 따라서 현재 실행중인 쿼리를 찾아 먼저 어떤 쿼리인지 확인 하는 것이 중요하다. SELECT sqltext.TEXT, req.session_id, req.statu.. 2018. 4. 23.
MSSQL 자리수 만큼 앞에 0 붙이기 (함수로 구현) /*MSSQL에서 자리수만큼 앞 자리에 0을 붙여줘야 하는 경우가 간혹 있다.예를 들어 1을 5자리로 출력하고 싶다면 00001이 되는 경우이다. 특히 숫자 타입의 경우에는 0이다 날아가버려서 난감할 때가 있다. 예를 들어 전화번호를 비교해야할 때 0001이 1로 되어버린다면 비교시 분명 다른 문자로 인식할 것이기 때문이다. 따라서 우리는 정확한 포맷으로 표준화를 지켜줘야 한다.어찌됐든 자리수만큼 숫자 0 붙이는 방법은 다음 함수를 생성하여 쉽게 붙일 수 있다.*/ USE TESTDB SET ANSI_NULLS OFF; GO SET QUOTED_IDENTIFIER ON; GO ------------------------------------------------------------------------.. 2018. 4. 21.
MSSQL 날짜 포맷 변환 CONVERT CONVERT( TARGET_TYPE, EXPRESSION, DATE_STYLE SMALLINT ) MSSQL의 CONVERT 함수를 활용하여 날짜 포맷을 여러 형태로 바꿔보도록 하자.보통 쉽게 쓰려면 VARCHAR(8) = '20180421' 이런식으로 넣는 경우가 있는데 굳이 MSSQL이나 ORACLE 등 업체에서 DATE TYPE을 만들어놨는데 통일해서 VARCHAR(8)로 쓸 이유는 없다. 차라리 날짜 형식으로 바꿔주면 조회할 때도 훨씬 빠르고 압축 비율도 높아진다. 다음은 GETDATE()를 활용해서 VARCHAR 형태로(사실 100까지 쓸 필요는 없지만 예를 보여주려고 넉넉히 잡음) DATE_STYLE을 100부터 126까지 조회해본 결과이다. SELECT CONVERT(VARCHAR(100).. 2018. 4. 21.