T-SQL-옵션 (FAST x) 및 추적 플래그 8722


9

오랫동안 검색했지만 여전히 내 문제에 대한 답을 찾지 못했습니다.

Dynamics AX는 쿼리 힌트 OPTION (FAST x)을 사용하여 쿼리를 생성하므로 때로는 잘못된 실행 계획을 사용해야합니다. 개발자는 기본적으로 변경하기가 어렵다고 말합니다 (모든 형태에서 잠재적으로 수정되어야 함).

그래서 추적 플래그를 사용하여 이러한 힌트를 무시하는 방법을 찾았습니다. SQL Server가 일부 쿼리 힌트, 특히 OPTION 절의 쿼리 힌트를 무시하도록 만드는 멋진 추적 플래그 8722를 발견했습니다.

그러나 이것은 내 경우에는 작동하지 않습니다. 추적 플래그 8602 (인덱스 힌트 비활성화)도 활성화하려고했지만 쿼리가 여전히 FAST x 힌트로 실행 중입니다 (실제로 OPTION 절을 제거 할 때보 다 훨씬 느립니다).

나는 계획 캐시를 지우려고 노력했지만 아무 소용이 없었다.

어떤 아이디어? 아무것도 빠졌습니까?

추신 : 나는 추적 플래그를 전 세계적으로 활성화했습니다. 이것은 SQL Server 2012 Developer 에디션입니다.


1
추적 플래그를 어떻게 켰습니까? 서버 시작 또는 dbcc traceon을 사용하여 켜셨습니까? dbcc traceon은 연결 별 추적 플래그이므로 한 클라이언트 연결에서 켜도 다른 서버 연결에는 영향을 미치지 않습니다. 서버 전체에서 켜려면 시작 명령 줄에 -T <traceflagnumber>를 추가해야합니다. dbcc traceon (flag1, flag2, ...,-1)을 사용하여 서버 전체에 적용 할 수 있다고 생각하지만 시도한 적이 없습니다.
Mike

안녕하세요, DBCC TRACEON (8722, -1)을 사용하여 전역 적으로 추적 플래그를 활성화 한 다음 DBCC TRACESTATUS로 상태를 확인했습니다. 추적 플래그가 더 이상 공식적으로 지원되지 않거나 실제로 시작 매개 변수에 넣고 서비스를 다시 시작해야하거나 CU3의 주제 일 수 있습니다 (2012 SP2 RTM을 실행 중임).

답변:


10

내가 아는 한 추적 플래그 8722, 8755 및 8602는 공식적으로 문서화되지 않았습니다. 내가 효과적이라고 기억 한 것은 SQL Server 2000에 있었기 때문에 SQL Server 2012에서 무시되었다는 사실은 놀랄 일이 아닙니다.

특정 쿼리 패턴의 경우 FAST n계획 지침을 사용 하여 힌트 를 제거 할 수있는 경우가 종종 있습니다 . 그럼에도 불구하고 가장 좋은 해결책은 AX 개발자가 응용 프로그램 측면에서 수정하도록하는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.