[MS-SQL] 락(LOCK) 걸린 프로세스 강제로 종료(KILL) 하는 법
·
IT & programming/MSSQL
SQL 에서 SELECT 혹은 EXEC 와 같이 조회나 프로시저 실행 시 락에 걸려 우너하는 결과를 얻지 못하는 경우가 발생한다. 이때 락 걸린 프로세스를 종료하는 방법이다. 1. SP_LOCK & SP_WHO2 현재 락 걸린 세션 ID를 확인할 수 있도록 SP_LOCK를 제공합니다. 또 다른 함수로는 SP_WHO2 도 제공됩니다. EXEC SP_LOCK EXEC SP_WHO2 실행하면 위와 같은 결과가 나오는데 Mode 컬럼에 X 인 경우가 현재 락이 걸린 세션입니다. BlkBy 컬럼에 값이 있다면 락이 걸린 세션입니다. 락이 걸린 세션을 확인했다면 해당 세션ID (SPID) 를 확인하여 해당 세션을 종료시켜주면 됩니다. KILL (SPID) 다시 조회하면 락이 풀린 것을 확인할 수 있습니다. http..
[MS-SQL] 최근 수정된 개체 검색 방법
·
IT & programming/MSSQL
sys.object 를 검색하다가 예제에 유용해 보이고 현재 개발하고 있는 부분을 테스트 서버에서 실서버로 적용하기 위해서도 필요할 것 같아 포스팅 하기로 마음먹었다. 최근 수정된 프로시저 및 모든 개체를 검색하는 예제 SELECT name AS object_name ,SCHEMA_NAME(schema_id) AS schema_name ,type_desc ,create_date ,modify_date FROM sys.objects WHERE modify_date > GETDATE() - -- n_days 부분에 최근 며칠이내의 수정내역을 보고 싶은지 검색하면 된다 ORDER BY modify_date; 조회해보면 조건에 해당하는 개채들을 조회할 수 있으며, 순서대로 명 / 스키마 / Type / 생성일자..
[MS-SQL] 프로시저 내부의 문자열 검색 (syscomments & sql_modules)
·
IT & programming/MSSQL
프로시저 내부의 문자열을 검색하는 방법은 과거 포스팅도 했듯 sys.syscomments로 간단하게 할 수 있다. https://kaiaphas.tistory.com/55 [MS-SQL] 프로시저 문자열 검색 수 많은 프로시저들 중에서 테이블이나 프로시저를 검색할 때 사용하는 SELECT 문이다. 이것말고도 몇가지 방법이 더 있긴 한데... 그냥 이게 가장 간단해서 애용하는 방법이다. SELECT DISTINCT OBJECT_N kaiaphas.tistory.com 하지만... 그렇다고 한다. 뭐 어쨌든 기능이 삭제되니 아래 sql_modules 로 변경하라는 뜻 같다. 하여 아래 내용으로 다시 포스팅 한다. 문자열 검색 SELECT sm.object_id , OBJECT_NAME(sm.object_id..
[MS-SQL] CHARINDEX 이용하여 문자열 자르기
·
IT & programming/MSSQL
CHARINDEX() 함수는 두 번째 문자 내에서 첫 번째 제공된 문자를 찾아 위치를 반환한다. CHARINDEX charindex( expressionToFind , expressionToSearch [ , start_location ]) return int; CHARINDEX 를 이용하여 문자열 자르기 declare @t1 table ( idx int identity (1,1) not null, itemname varchar(30) ) -- t1 테이블 생성 insert into @t1 values ('안녕하세요#안녕하세요') insert into @t1 values ('반갑#습니다') -- t1 테이블에 데이터 입력 select charindex('#',itemname) as idx, left(it..
[MS-SQL] 수량 만큼 ROW 추가 및 증가
·
IT & programming/MSSQL
업체 요청사항으로 현재 가지고 있는 Roll 수를 하나의 행으로 표현해달라는 요청을 받았다. 위 부분을 검색하며 짠 부분을 포스팅 한다. Declare @T1 Table ( idx int identity (1,1) not null, item_name varchar(20), item_num int ) -- T1 테이블 생성 -- T1 테이블이 기본이 되는 테이블이다. Declare @T2 Table ( idx int identity (1,1) not null, item_name varchar(20), item_num int ) -- T1에 있는 수량만큼 ROW로 추가할 테이블이 T2 Insert into @T1 values ('book', 2) Insert into @T1 values ('note', 3)..