2012-01-16 3 views
7

게시물에 SQL 오류가 발생했습니다. here ... (오류 메시지 : 제한 시간이 만료되었습니다. 작업 완료 또는 서버가 응답하지 않습니다. ") Visual Studio의 데이터베이스 도구를 사용하여이 작업을 수행하려고합니다 ... 관리 스튜디오가 아니라 클라이언트 코드/ADO (아직)를 거치지 않았습니다. 몇 가지 사용자 지정 함수를 사용하는 간단한 쿼리 ... 함수의 일부와 쿼리의 일부가 테스트되었지만 모두 제대로 실행되고 있지만 아래의 쿼리는 시간이 초과되었습니다.이 작업은 Management Studio에서 입력 한 것과 똑같이 실행됩니다. 약 4 분 정도 걸립니다. 다른 게시물에서 언급했듯이이 게시마다 도구> 옵션> 디자이너> "연결 문자열 제한 시간 값 무시"의 설정을 120 초로 변경했지만 여전히 시간 초과됩니다 30 초. 이 최신 버전의 ISNULL은 관리 스튜디오에서 실행되는 변경 사항입니다.SQl 서버가 여전히 "제한 시간이 만료되었습니다. 시간 초과 기간이 만료되었습니다."

SELECT Symbol, LatestDate 
FROM (SELECT Symbol, ISNULL(dbo.LatestDateInDailyPricingVolBySymbol(Symbol), '1/1/1900') AS LatestDate FROM tblSymbolsMain) AS T2 
WHERE (LatestDate < dbo.RecentTradingDateByNumber(3)) 

일반적인 생각은 최소 3 일 내 매일 가격표에 대응하는 데이터 포인트가없는 주식 기호의 일부를 다시 얻을 수 있습니다. 어떤 사람? 모두에게 감사드립니다.

답변

10

타임 아웃에 관계없이;

쿼리를 실행하기 위해 SQL 관리 콘솔을 사용하고 있습니까? 그렇다면 데이터베이스에 연결할 때 시간 제한을 설정할 수있는 옵션 버튼이 있습니다. 또한

Connection Options

, 쿼리 창에서 마우스 오른쪽 버튼을 클릭하고 쿼리 옵션을 선택하면 ....

0, 무제한의 의미, 나는이를 확인합니다. 4 분이 길면 시간이 많이 걸립니다. 쿼리가 리팩터링되어 더 빨리 실행될 수 있습니까? 당신은 C#을 통해 비주얼 스튜디오의 내부를 실행하는 경우

enter image description here

은 기본 명령 제한 시간은 30 초입니다. 명령 시간 초과를 설정하여 변경하십시오.

SqlCommand comm= new SqlCommand(); 
comm.CommandTimeout = 300; 
+0

그것은 관리 스튜디오에서 실행되지만 시간이 좀 걸립니다 ... Visual Studio 2010의 SQL 도구로 실행하려고합니다. – StatsViaCsh

+0

@StatsViaCsh - SQL Server 관리 콘솔과 유사한 VS2010 내부 설정이어야합니다. 코드가 생성 된 경우 코드를 통해 조정할 수 있지만 쿼리 화면이나 옵션을 마우스 오른쪽 버튼으로 클릭 할 수 있습니까? 죄송합니다. VS2010을 사용하여 쿼리를 실행하는 대신 SQL Server 관리 콘솔 만 사용하므로 해당 화면에 익숙하지 않습니다. –

+0

@StatsViaCsh - VS2010을 조금 둘러 보았습니다. 연결 시간 제한을 설정할 수는 있지만 명령 제한 시간을 찾을 수 없습니다. 도구를 사용하는 대신 코드를 사용하여 시도해 볼 것이므로 쉽게 변경할 수없는 기본값을 사용하는 것처럼 보입니다. –

1

일상 생활에 4 분이 걸리는 것이 걱정됩니다. 이것은 함수가 자신이하는 것처럼 보이는 것으로 가정하고 인덱싱과 적절한 테이블 디자인을 사용하면 매우 단순한 쿼리처럼 보일 것입니다.

는이 쿼리에 대한 실행 계획을 살펴 보았다하십시오 행의 많은 수의, 또한 상처 sargability과 세트에 반복적으로 호출 할 때

SELECT Symbol, MAX(TradeDate) 
FROM tblSymbolsMain 
GROUP BY Symbol 
HAVING MAX(TradeDate) < dbo.RecentTradingDateByNumber(3) 

스칼라 기능은 성능 문제가 될 수 있습니다.

+0

감사를 참조 검사에 대한 자세한 정보를 알고 싶다면

"쿼리/클라이언트 통계를 포함합니다." 정말로 길게 보인다! 나는 내 사형 집행 계획을 보지 않았다 ... 나는 잘 모르겠다. 이 함수의 값을 설정할 수있는 저장 프로 시저를 만드는 아이디어가있었습니다. dbo.RecentTradingDateByNumber (3)을 한 번만 수행했지만 미묘한 변경으로 인해 줄이 떨어지는 것은 알 수 없습니다. 너가 더 너구리가 있으면, 나는 모두 귀이다. – StatsViaCsh

+0

@StatsViaCsh Management Studio에는 실행 계획을보기위한 메뉴 옵션이 있습니다. 나쁜 실행 계획이 어떻게 생겼는지 이해하는 방법을 알려주는 무료 전자 서가 있습니다 : http://www.simple-talk.com/books/sql-books/sql-server-execution-plans/ –

2

쿼리가 오랜 시간이 걸린다면 문제 일 수 있습니다. RecentTradingDateByNumber를 저장할 변수를 선언합니다. 그래서 다음과 같습니다 :

DECLARE @RecentTrandingDateByNumber DATETIME 
SET @RecentTrandingDateByNumber=dbo.RecentTradingDateByNumber(3) 

SELECT 
    tblSymbolsMain.Symbol, 
    MAX(tblSymbolsMain.TradeDate) 
FROM 
    tblSymbolsMain 
GROUP BY 
    Symbol 
HAVING 
    MAX(TradeDate) < @RecentTrandingDateByNumber 

관리 스튜디오에서 실행을 보려면 "쿼리 실행/실제 실행 계획 포함"으로 이동하십시오. 또한 쿼리의 트래픽을 선택 등의 숫자를보고 싶다면 또한 클라이언트 통계를 포함시킬 수 있습니다.당신은 쿼리 실행이 응답에 대한 here

+1

고마워, 오늘 내가 할 일은 처음이야. – StatsViaCsh

관련 문제