2012-11-02 1 views
1

합니다 (기름 한 질문에 대한 죄송합니다, 나는 간결하려고합니다.) 질문과 나는 SQL Server 프로파일 러를 실행하는거야 내가 몇 가지 성능 문제를 추격하고있어기본 SQL 프로파일 러의 몇

. 필자는 프로파일 러가하는 일에 비교적 익숙하며 추적을 테이블로 내 보내서 데이터에 대해 쿼리를 실행할 수 있습니다.

필자가 해봤 던 점 중 하나는 트레이스 내보내기에서 생성 된 테이블의 TextData 필드에 대해 select 쿼리를 수행하는 것 같은 이상한 동작입니다. 필드의 데이터 유형 (ntext, null)과 관련 될 수 있습니다. 특정 값을 선택하지만 예기치 않은 결과가 발생합니다. 나는이 할 경우 예를 들어, :

select * from [TraceAnalyzer].dbo.TraceTable 

을 나는 같은 값에 관심이 있어요 :

select * from [TraceAnalyzer].dbo.TraceTable 
where TextData like '%exec [Sproc_of_interest] @parm1=%' 

하지만 :

exec [Sproc_of_interest] @parm1=992 

나는이 같은 쿼리를 할 거라고 반환 결과가 비어 있습니다. 내가 같은 쿼리 할 경우

또한 :

select * from [TraceAnalyzer].dbo.TraceTable 
where TextData like '%exec [Sproc_of_interest]%' 

을 나는 기준에 대괄호가 일을 망치는겠습니까 exec sp_reset_connection

같은 예기치은 textData 값을 얻을? 나는 그들을 생략하려고했지만, 그것은 단지 모든 것을 배제한다. SQL 선택 쿼리에서 이스케이프 문자를 인식하지 못합니다. 그러나 문제의 레코드 중 하나에서 값을 복사/붙여 넣을 때 붙여 넣은 값에 원래 쿼리의 조건을 충족시키는 내용이 포함되어 있지 않습니다.

어떤 통찰력이라도 대단히 감사하겠습니다. 감사.

+1

'[Sproc_of_interest]' 패턴 구문에서 일치시킬 값 집합으로 해석됩니다. 어쨌든 당신이 선도적 인 와일드 카드를 사용하고 있다면 아마 [CHARINDEX'를 사용하는 것이 더 쉽습니다.] (http://stackoverflow.com/questions/258757/escape-a-string-in-sql-server-so-that-it -is-like-in-like-expression/9242060 # 9242060)를 사용하여 모든 특수 문자를 이스케이프 처리하지 마십시오. –

+0

Martin 감사합니다. 그게 내가 원하는 걸 얻는 것 같아. 대답으로 다시 게시하면 내가 인정한 점수를드립니다. :-) – BobC

답변

0

[Sproc_of_interest]의 패턴 구문은 S,p,r,o,c,_,o,f,_,i,n,t,e,r,e,s,t에있는 하나의 문자와 일치하는 것으로 해석됩니다.

다음과 같은 세 가지 가능한 해결 방법이 있습니다.

1) 대괄호

LIKE '%exec [[]Sproc_of_interest] @parm1=%' 

2

) 이스케이프 문자

LIKE 'exec \[Sproc_of_interest] @parm1=' ESCAPE '\' 

3) 대신에 아무것도

탈출의 CHARINDEX을 사용을 사용하여 [ 탈출
WHERE CHARINDEX('exec [Sproc_of_interest] @parm1=' , TextData) > 0 
+0

범위 "c_o"가 의미하는 것의 의미를 명확히 할 수 있습니다. 밑줄은 범위가 아닌 단일 문자의 와일드 카드입니다. 그것은'c-o' 일 것입니다. – Pondlife

+0

@Pondlife - 좋은 지적, 나는 실제로''' –