컴파일 한 번에 성공하는 그 날까지👀

코딩왕이 되고싶은 이코딩의 개발괴발 개발일지 😼

개발괴발🐾/MSSQL 4

[QUERY] 데드락 발생 시 해결 방법 (Dead lock)

데드락이란? 두 트랜잭션 모두가 블로킹 상태에 진입하여 서로의 블로킹을 해결할 수 없는 상태이다. = 작업하다가 엉켜서 꼼짝 못하고 있다 이말이다 ㅠ.. 쿼리의 문제일수도 있고 서버의 문제일수도 있는데, 아무튼 해결해보자. 1. sp_lock 실행 Mode 컬럼의 값이 X 이면 데드락 상태에 빠졌다고 볼 수 있다. exec sp_lock 2. 락이 걸린 쿼리문 확인 EventInfo 컬럼을 통해 락을 발생시킨 쿼리문을 확인할 수 있다. dbcc inputbuffer(spid) 3. 락 제거 (kill) 얼른 죽이자. kill spid

[QUERY] MSSQL 저장프로시저 검색 관련 쿼리

가끔가다 저장프로시저를 무지막지 하게 많이 만들어 놓은 데이터베이스에서 작업해야 될 때가 있다😅 저장프로시저 특성상 쿼리문이 노출 안돼서 어느 테이블의 데이터를 어떻게 건드리는건지 알수가 없는데, 이 때 저장 프로시저 이름/컬럼 정보만 겨우 알고 있어도 저장 프로시저를 찾을 수 있는 방법을 2개 소개하려고 한다😎 (1) 정의 내부 기준으로 프로시저 검색 SELECT OBJECT_NAME(object_id) as [procedure name], OBJECT_DEFINITION(object_id) as [description] FROM sys.procedures WHERE OBJECT_DEFINITION(object_id) LIKE '%찾을 내용%' (2) 이름 기준으로 저장 프로시저 정의 검색 SELECT..

[QUERY] 테이블 이름으로 컬럼 목록 출력(Data Type, PK, FK, NOT NULL 설정까지)

테이블 이름을 기준으로 컬럼 목록 조회. SELECT a.TABLE_NAME as 'Table Name' , a.COLUMN_NAMEas 'Column Name' , case when a.CHARACTER_MAXIMUM_LENGTH IS null then a.DATA_TYPE else a.DATA_TYPE + '(' + case when ltrim(str(a.CHARACTER_MAXIMUM_LENGTH)) = '-1' then 'max' else ltrim(str(a.CHARACTER_MAXIMUM_LENGTH)) end + ')' end as DATATYPE , case when a.column_name=isnull(b.column_name,'') and c.constraint_type='PRIMARY..

[QUERY] 데이터베이스 테이블 컬럼 자동 증가값(IDENTITY)[시퀀스 SEQ] 초기화

자동 증가값으로 설정된 컬럼은 테이블에서 데이터가 삭제 되어도 시퀀스값(SEQ)은 초기화 되지 않는다. 그래서 수동으로 시드값을 초기화 시켜주어야 하며, 이 때 초기화 대상으로 설정되는 시작값은 증가하기 전 값으로 설정해야한다. 아래 블럭을 실행 시킬 경우 IDENTITY 값은 1부터 시작. --테이블 identity값 초기화 -- DBCC CHECKIDENT([테이블명], reseed, 시작값) DBCC CHECKIDENT([customer], reseed, 0) 결과 짠 초기화 되기 전의 현재 ID값을 리턴해주긴 하는데 아직 활용 해본적은 없음😅