2013-02-19 11 views
0

저는 바이올린을 좋아하는 엔지니어가 가득한 제조 환경에서 독학하는 DBA입니다. sysadmin이나 명시적인 추가 권한을 부여하지는 않았지만 일부 엔지니어에게는 'killer'쿼리를 실행하는 데 문제가 있습니다. 연결에 대한 기본 명령 시간 초과가 30 초인 것은 일반적으로 문제가되지 않지만이 엔지니어 중 일부는 자동 완성 기능을 위해 SQL Developer를 구입했습니다. 물론 기본적으로 이들을 무한 'CommandTimeout'과 연결합니다.새 세션 및 기존 세션 변경 명령 ​​제한 시간 값

어떤 식 으로든/또는 새 연결/세션을 변경하고 CommandTimeout을 좀 더 합리적인 수준 (30 초 미만)으로 설정하는 것이 좋습니다. 새로운 연결을 위해 필자는 일종의 데이터베이스 트리거를 사용하여 해당 컨텍스트에서 명령을 실행합니다. 기존 연결, 아마도 시스템 테이블에 무언가 끔찍한가?

답변

1

불행히도 클라이언트 CommandTimeout 값을 재정의 할 수 없습니다. 클라이언트 구성 및 인스턴스 관련 구성이 아니라는 것을 눈치 챘을 수도 있습니다.

그러나 쿼리 (자원) 조정자를 사용하여 장기 실행 쿼리를 피할 수 있습니다.

http://msdn.microsoft.com/en-us/library/bb933866.aspx

http://technet.microsoft.com/en-us/library/ms191219.aspx

죄송 완전한 해답을 제공하지하지만 난이 당신을 도울 것이라고 생각 :

나는이 주제에 대한 추가 읽기를 제안한다.

+0

첫째, 감사합니다. 매우 감사. 저는 자원 관리에 대한 제안을 조사하기 시작했습니다. 지금까지도 여전히 재생 중이므로 자원 할당이 줄어들어 쿼리 시간이 확장된다는 것을 알았습니다. 쿼리는 여전히 실행되며, 더 오래 걸립니다 ... 또한 시간이 오래 걸리는 이유를 알려주지 않습니다. 설정된 실행 시간에 쿼리를 종료하는 방법을 아직 알지 못했습니다. –

+0

나는 또한 보았다 : 1 ... 서버 로그온 트리거 : 실행 시점에 세션이 아직 존재하지 않기 때문에 작동하지 않는다. 2 ... 데이터베이스 트리거 : 아니요 LOGON 또는 SELECT 특성이 없습니다. 3 ... EXECUTE AS : 기존 세션을 첨부하거나 변경하지 않습니다. –

+0

sys.dm_exec_requests.total_elapsed_time을 보면 알 수 있습니다. 쿼리가 실행 된 시간을 볼 수 있습니다. 이 경우 내가 실행할 수있는 스크립트가 있는데, 특정 시간이 지나면 문제가되는 SPID가 '죽을'수 있습니다. 소리는 들리지만 세션이 종료되므로 클라이언트 소프트웨어에 대한 모든 관심이이를 처리하고 다시 연결되지만 여전히 세션이 종료 된 이유에 대한 정보는 없습니다. 아마도 세션을 죽이는 대신 쿼리를 중단하는 방법이 있을까요? –