2011-03-25 5 views
3

현재 SQL 2008 데이터베이스 중 하나에서 계속 잠겨있는 문제가 있습니다. 그것은 몇 시간 동안 잘 돌아갈 것이며 갑자기 그 데이터베이스를 사용하는 모든 어플리케이션이 작동을 멈 춥니 다. 약 2 주 전부터 아무런 문제가 없었습니다. 그 당시 많은 변화가 없었으므로이 문제를 야기하지는 않을 것입니다.한 행을 삽입하는 단일 행을 삽입하십시오.

무슨 일이 일어나고 있는지 파악하기 위해 SQL 프로파일 러를 실행했습니다. 하루에 1 초마다 수백 건의 쿼리가 실행되는 것을 보여줍니다. 그런 다음 갑자기 몇 가지 쿼리 만 실행되는 10 분 간격이 있습니다. 그 시간을 돌아볼 때, 나는 단지 한 시간 이상 실행 된 삽입 쿼리를 발견했습니다. 동일한 쿼리 (그러나 다른 데이터)는 모든 것이 멈추었을 때 여러 번 데이터베이스에 잠긴 것으로 나타났습니다.

일반적으로 SQL Server를 실행하려면 SQL Server 서비스를 다시 시작해야합니다. 분명히 모든 잠금을 제거하고 모든 쿼리를 죽이면 모든 것이 다시 진행됩니다. 그러나 때때로 다시 멈 춥니 다. 때로는 시간 내에, 몇 시간 후에는 다른 시간에 멈 춥니 다.

기본적으로 "테이블 (x, y, z)에 삽입하십시오. x, y, x는 소스 세트에서 선택하십시오"라는 간단한 삽입입니다. 한 시간이 걸린 명령문의 선택 부분을 실행하면 실행할 시간이 없습니다 (문자 그대로 00:00:00이라고 말합니다). 그래서 나는 무슨 일이 일어나고 있는지 꽤 이해할 수 없습니다.

잠시 동안 테이블 중 하나가 손상되었을 수 있음을 알았습니다 (삽입 문이 대상이나 소스가 아님). DBCC 명령을 해당 테이블에서 실행했지만 오류를보고하지 않았습니다.

저는 그 문장을 실행하는 .net 응용 프로그램을보고 있습니다. 그 응용 프로그램은 무엇이 있는지를 알기 위해이 문장을 실행하지만 그 전에는 아무 것도 보지 못한 것을 궁금해합니다. 그 원인 일까?

미리 감사드립니다.

+0

다른 스크립트와 함께 해당 스크립트의 치명적인 잠금이 가능합니까? 또한, 테이블에 어떤 트리거 또는 일반적인 무언가가 첨부되어 있습니까? –

+0

교착 상태와 비슷합니다. 이 문제가 발생하면'sp_lock'을 실행 해 보셨습니까? – Blorgbeard

+0

우리는 가끔씩 교착 상태에 관한 에러를 얻습니다. 쿼리가 교착 상태의 희생자가되었지만 전체 데이터베이스가 잠겨 있지 않은 상태에서 오랫동안 계속 진행되고 있다는 것을 알려줍니다. – user676437

답변

4

서버는 올바른 질문을하면 대기하는 이유를 알려줍니다. 매달려있는 session_id에 대해 sys.dm_exec_requests 및 sys.dm_os_waiting_tasks를보고 기다리는 내용을 확인하십시오. 그것은 당신에게 무슨 일이 일어나는지에 대한 통찰력을 줄 것입니다.

+0

우수, 그게 우리에게 유용한 것을 말해 줄 것 같은데. 항상 그렇듯이 메시지를 게시 한 이후로 다시 발생하지 않았는지 다시 확인하기를 기다렸습니다. 빠른 시일 내에 뭔가 잘못되기를 바라는 것이 잘못 되었습니까? :) – user676437

+1

또한 Adam Machanic이 sp_WhoIsActive를 다운로드하고 시간이지나면서이 쿼리가 남쪽으로 실행됩니다. 그는 도구에 많은 작업을했습니다. DMV의 원시 출력을 보는 것보다 더 많은 정보를 얻을 수 있습니다. http://sqlblog.com/blogs/adam_machanic/archive/2009/12/03/who-is-active-v9-57-fast-comprehensive-dmv-collection.aspx –

+0

Quantum Elf에게 감사드립니다. 다시 얼어 버린다. – user676437

관련 문제