반응형

SQL Server 에서 Batch Program 작업이나 Bulk 작업등의 프로세스를 실행할 경우

간혹가다 Lock이 걸리게 된다. 오라클이나 Mysql 에서는 ROW LOCK이 자주 발생하게 되는데

이러한 Lock은 Application단의 logic Transaction관리에서 발생하게 된다.

 

SQL Server 에서의 Lock의 종류와 유형에 대해서 알아보고, 어떠한 Statement가 Lock을 발생

시키는지 알아보도록 하겠다.

 

(1) SQL Server Lock의 종류와 설명 

 Lock 조회방법 : sp_lock

 

결과 : 아래 그림과 같이 표현된다.

 

위 조회결과에서 주의깊게 봐야할 부분은 Type 부분이다. DB,TAB 과 같이 출력된 부분이 바로 Lock의 종류이다.

Lock Type 

 Description

 RID

 테이블의 ROW를 잠근다(흔히들 ROW LOCK이라 불린다.)

 KEY

 INDEX ROW LOCK임.(IDENTITY 속성이 트랜잭션 범위에 있다면 LOCK이 걸린다.)

 PAG

 데이터 또는 인덱스 페이지 이다.

 TAB

 모든 데이터와 인덱스가 포함된 전체 테이블 이다.

 DB

 데이터 베이스 이다.

 

(2) 어떠한 SQL이 Lock을 발생시키고, 어떠한 프로세스가 대기 상태인지 조회 가능할까?

실제 Lock이 걸렸다면, Lock의 종류만 아는것 보다는, 어떤 프로세스가 Lock이 걸려 있는지 조회 할 수 있으면

더욱 유용하게 사용할 수 있을 것이다. 만약 상사가 Lock이 어디걸렸어? 라고 물어보았을때 Best Answer은

"어떤 영역에 TABLE Lock 이 걸려있어서, 어떤 프로세스가 거기를 select 하려다 보니 안됩니다."

라고 대답하는게 최고의 대답이 아닐까 생각한다.

 

** Lock을 발생시킨 프로세스를 찾아라 !!! **

 

 Lock 걸린 프로세스 조회 : sp_who or sp_who2(추천)

 

sp_who2를 실행하였을때 아래와 같은 결과가 나온다.

여기서 주의깊게 봐야할 컬럼은 BlkBy 이다. 30 번 라인을 보면 SUSPENDED 라고 해서 한국어로 하면 지연됨 이란 글자와 함께

BlkBy 컬럼에 59란 숫자가 있다. 이부분이 매우 중요하다. 이 부분을 해석을 하면 이런 의미이다.

해석 : 53번 프로세스ID를 가진 실행중인 프로세스가 SELECT 문을 실행하려고 하는데 59번의 실행중인 SQL 문 때문에 지연

         되고있는 상태이다.

 

해석을 봐서 알겠지만, 53번은 59번 프로세스가 실행이 완료될때까지 WAITING 상태인 것이다. 이걸 전문용어로 BLOCKING 이라고

한다.(뭐 ~ 전문용어도 알아두면 편하긴 하다)

 

** 현재 프로세스가 실행하고 있는 Statemenet는 무엇인가??? **

 

 실행하고 있는 프로세스 상세조회 : DBCC INPUTBUFFER( @PID )

 EX ) DBCC INPUTBUFFER(56)

 

 

결과 : DBCC의 결과는 아래와 같다.

EventType 쪽을 복사해서 메모장에 붙여넣으면 아래와 같이 출력된다.

(@P0 int,@P1 nvarchar(4000),@P2 nvarchar(4000))EXEC dbo.USP_SelectDuplicationAAA 

 

위 처럼 USP_SelectDuplicationAAA 라는 사용자 정의 프로시져를 호출한 것이 보여질 것이다.

만약 IBATIS와 같은 모듈에서 SQL문을 바로 적었더라면, 실행중인 SQL 명이 출력되게 될 것이다.

 

 

오늘은 프로시져의 Lock의 종류와 Lock걸린놈을 체크하는 방법에 대해 알아보았다.

어렵지 않다!! 어려워 느낄뿐이다.

 

그럼 담에 또 쓰도록 하겠다.

 

-- 2013.10.23 랑이씀 --

반응형

'DB > MS-SQL' 카테고리의 다른 글

[펌] [SQL SERVER 2005 VERSION 별 차이]  (0) 2010.07.21
MSSQL 혼합인증방식 설정  (0) 2010.05.06
MSSQL - 원하는 날짜를 수순대로 구하기  (0) 2010.04.12
[펌] MSSQL 에서 MD5 사용하기  (0) 2010.03.17
MSSQL PAGING PROCEDURE  (0) 2010.03.12
반응형

SQL Server 2005 제공 버전

오늘날의 기업은 다양한 유형의 데이터 관리 솔루션을 필요로 하며, 그 중에서도 뛰어난 성능, 확장성 및 안정성을 제공하는 동시에 사용과 관리가 간편한 솔루션을 요구하고 있습니다. 또한 기업에서는 주요 IT 투자로부터 더 많은 투자효과를 기대하고 있습니다. 이제 SQL Server 2005가 엔터프라이즈급 데이터 관리 및 비즈니스 인텔리전스 솔루션을 제공함으로써 고객의 기대를 능가하는 결과를 가져다 드립니다.

그러나 귀하의 현재 엔터프라이즈 솔루션이 충분히 만족스럽다면, Microsoft에서 추가로 제공하는 SQL Server 2005 Express Edition을 사용해 보십시오. SQL Server 2005 Express Edition은 MSDE의 차기 버전으로, SQL Server 2005의 사용이 간편한 경량의 무료 임베디드 버전입니다. SQL Server 2005 Express Edition은 무료 다운로드, 무료 재배포, 무료 임베디드가 가능하며 처음 접하는 개발자들도 바로 사용할 수 있을 만큼 쉽습니다.

다음에서는 SQL Server 2005에서 제공하는 각 버전 즉, SQL Server 2005 Enterprise Edition, SQL Server 2005 Standard Edition, SQL Server 2005 Workgroup Edition, SQL Server 2005 Express Edition, SQL Server 2005 Developer Edition, SQL Server 2005 Mobile Edition 및 64비트 플랫폼 기반 제공 버전에 대해 간단하게 설명합니다. 링크를 누르면 자세한 내용을 보실 수 있습니다. 또한 원하는 사양에 맞는 SQL Server 2005 제공 버전을 선택하려는 경우 SQL Server 2005 기능 비교표 (영문)에서 나란히 비교하거나 웹 캐스트 (영문)에서 확인하실 수 있습니다.

SQL Server 2005 Enterprise Edition (영문)

엔터프라이즈 버전은 기업 데이터 관리 및 비즈니스 인텔리전스 기능을 완전하게 갖추고 있으며, SQL Server 2005에서 제공하는 모든 버전 중에서 가장 높은 수준의 확장성 및 가용성을 제공합니다. 또한, x64 및 Itanium 기반 서버에서 실행되도록 최적화되어 한층 향상된 데이터베이스 확장성과 가용성을 보장해 드립니다.

SQL Server 2005 Standard Edition (영문)

스탠더드 버전은 중소규모 조직에 적합한 옵션입니다. 이 제품에는 일반 e커머스, 데이터 웨어하우징 및 기간 업무(LOB) 솔루션에서 요구되는 핵심 기능이 있습니다. 스탠더드 버전은 win32, x64 및 Itanium 기반 서버에서 실행되도록 최적화되었습니다.

SQL Server 2005 Workgroup Edition (영문)

워크그룹 버전은 소규모 조직 또는 큰규모 조직 내의 작업 그룹을 위한 데이터 관리 솔루션입니다. 이 제품은 데이터 관리에 필요한 모든 핵심 데이터베이스 기능을 저렴함 가격의 관리하기 쉬운 패키지로 제공합니다.

SQL Server 2005 Express Edition (영문)

익스프레스 버전은 응용 프로그램 내/외부 정보 보호 및 관리가 중요한 곳에 사용이 간편한 견고한 무료 데이터베이스를 제공함으로써, 개발자들은 강력하고 안정성 있는 응용 프로그램을 구축할 수 있습니다. SQL Server 2005 Express Edition은 사용 기한에 제한이 없으며 무료 재배포가 가능합니다.

SQL Server 2005 Compact Edition (영문)

임베드가 가능하고 경량이지만 뛰어난 기능을 제공하는 SQL Server 2005 버전으로 차세대 모바일 및 데스크톱 응용 프로그램을 개발할 수 있습니다.

SQL Server 2005 Developer Edition (영문)

디벨로퍼 버전은 SQL Server 2005 상에서 개발자들이 각종 응용 프로그램을 개발할 수 있도록 고안되었습니다. 엔터프라이즈 버전(win32, x64, IA64)의 모든 기능을 포함하지만, 제작 배포를 금지하는 특별한 개발 및 테스트 사용권 계약도 함께 들어 있습니다.

64비트 플랫폼 기반 버전 (영문)

SQL Server 64비트는 x64 및 Itanium 기반 서버에서 실행되도록 최적화된 엔터프라이즈급 데이터베이스로 높은 수준의 데이터베이스 확장성 및 가용성을 보장합니다. 64비트 기능은 SQL Server 2005의 스탠더드, 엔터프라이즈 및 디벨로퍼 버전에서만 가능합니다.


펌 주소 : http://www.microsoft.com/korea/sqlserver/2005/editions/default.mspx
반응형

'DB > MS-SQL' 카테고리의 다른 글

SQL Server Lock 조회 방법  (8) 2013.10.23
MSSQL 혼합인증방식 설정  (0) 2010.05.06
MSSQL - 원하는 날짜를 수순대로 구하기  (0) 2010.04.12
[펌] MSSQL 에서 MD5 사용하기  (0) 2010.03.17
MSSQL PAGING PROCEDURE  (0) 2010.03.12
반응형
MSSQL 에서는 기본적으로 Windows 인증방식을 취한다.

하지만 외부 접속 Tool 이나 외부 WAS에서 접속할때는 이와같은 방식으로 접근이 어렵다.

이런경우 MSSSQL 2005기준에서 설명하면 아래와 같이 regist를 수정해주어야한다.

1) regedit

2) Ctrl + F => 검색어 : LoginMode

3) 값을 1를 2로 변경한다.

1 의 의미 :  로그인시 Windows 인증  하겠다.
2 의 의미 :  로그인시 Windows와 SQL Server 인증을 혼합하여 사용하겠다.

4) MSSQL 를 재시작한다.



위의 값을  바꾸고 난 후 재시작 하여 접속하면 원활하게 접속이 가능하다.

- 이상 랑이의 경험담 -
반응형

'DB > MS-SQL' 카테고리의 다른 글

SQL Server Lock 조회 방법  (8) 2013.10.23
[펌] [SQL SERVER 2005 VERSION 별 차이]  (0) 2010.07.21
MSSQL - 원하는 날짜를 수순대로 구하기  (0) 2010.04.12
[펌] MSSQL 에서 MD5 사용하기  (0) 2010.03.17
MSSQL PAGING PROCEDURE  (0) 2010.03.12
반응형
select convert(char(10),dateadd(d,number,'2007-01-01'),120) dt
from master..spt_values
where type = 'P' and number <= datediff(d,'2007-01-01','2008-12-31')


이건 인터넷에서 찾은 쿼리이다.

이 쿼리를 추후 분석해봐야겠다.
반응형

'DB > MS-SQL' 카테고리의 다른 글

[펌] [SQL SERVER 2005 VERSION 별 차이]  (0) 2010.07.21
MSSQL 혼합인증방식 설정  (0) 2010.05.06
[펌] MSSQL 에서 MD5 사용하기  (0) 2010.03.17
MSSQL PAGING PROCEDURE  (0) 2010.03.12
MS-SQL IDENTIFY QUERY 정보  (0) 2010.03.05

+ Recent posts