2011-03-29 3 views
3

SQL Server 2005 데이터베이스에서 누락 된 인덱스를 확인하기 위해 sys.dm_db_missing_index_details를 살펴 보았습니다. 행을 반환하지 않습니다.sys.dm_db_missing_index_details는 행을 반환하지 않습니다.

기본 키를 생성하여 얻은 테이블을 제외하고 모든 테이블에 인덱스를 추가하지 않았으므로이 테이블은 비어 있어야하지만 거의 존재하지 않을 수도 있습니다. 또한 유닛 테스트뿐만 아니라 (Linq to SQL을 사용하는) 특별 개발 테스트를 실행하여 이에 대한 일부 활동을 수행합니다.

이 데이터 캡처를 켜야합니까?

이 버전은 특정 버전의 SQL Server 2005에서만 지원됩니까?

미리 도움을 주셔서 감사합니다.

+0

데이터베이스와 서버에 대한 사용 권한은 무엇입니까? – gbn

+0

안녕하세요. sa 계정을 사용하여 이것을 시도했습니다. 또한이 sa 계정을 사용하여 일련의 자동화 된 테스트를 실행했습니다. – Mark

답변

6

기본적으로 있다고 표시 - 당신이 시작하고 만들기 위해 사용중인 바로 가기를 확인하지만, 확인이 http://msdn.microsoft.com/en-us/library/ms345524(v=SQL.90).aspx

이 기능에서을 -x

으로 시작 아니에요 만하면 비활성화 할 수 있습니다 SQL Server의 인스턴스는 sqlservr 명령 프롬프트 유틸리티와 함께 ​​-x 인수를 사용하여 시작됩니다.

또한 테이블은 SQL Server가 쿼리 최적화를 사용하는 경우 쿼리가 실행으로 채워져 있는지 알고 싶은 것 -이 표는 SQL 서버를 다시 시작할 때 이 해제됩니다. sys.dm_db_missing_index_details에 의해 반환 http://msdn.microsoft.com/en-us/library/ms345434(v=SQL.90).aspx

정보에서

쿼리가 쿼리 최적화 최적화 될 때 업데이트되고 유지되지 않습니다. 누락 된 색인 정보는 SQL Server를 다시 시작할 때까지 보관됩니다. 데이터베이스 관리자는 서버 재활용 후 보관하려는 경우 누락 된 색인 정보의 백업 사본을 주기적으로 만들어야합니다. 'I didn를 http://msdn.microsoft.com/en-us/library/ms345485(v=SQL.90).aspx

:

은 마지막으로 당신이 수도 있고 대해 알고하지 않을 수 여기 한계에 들어가는 기사가있다,하지만 난 다른 사람이 게시물에 걸쳐 발생하는 경우에 게시합니다 및 필요 t은 일부 버전에서 누락되는 기능에 대한 아무것도 볼 수 있지만, 특정 권한이 필요합니다

사용자는 VIEW SERVER STATE 권한 또는이 동적 관리 뷰를 쿼리 할 수있는 VIEW SERVER STATE 권한을 암시하는 권한을 부여해야합니다.

+0

안녕하세요. DKnight입니다. 굉장한 답변 - 아주 철저합니다. 불행히도 그것은 내 SQL 서버가 -x로 시작되는 것처럼 보이지 않습니다. 또한 나는 'sa'로 쿼리를 조사해 보았고 아무것도 볼 수 없으므로이 경우에는 권한 문제가 아닌 것으로 생각됩니다. 내가 무엇을 확인할 수 있는지에 대한 제안? 더 많은 정보가 필요하면 시스템 쿼리 결과를 게시 해주십시오. – Mark

+0

내가 본 다른 유일한 사실은 실제로 최적화해야하는 쿼리를 실행하고 있는지 확인하는 것입니다. 확인 방법은 '예상 실행 계획 표시'를 실행하고 "누락 된 색인 (영향 ...)"이 녹색인지 확인하는 것입니다.이 항목이 테이블 항목을 생성 할만큼 충분하지만 해당 쿼리를 실행해야하는지는 확실하지 않습니다. 그 테이블에 뭔가를 넣으십시오 – DKnight

+0

또한 여러 DB 서버에 연결되어 있으면 올바른 것을 확인하고 있는지 확인하십시오 - 직접 오류가 발생하는 것을 볼 수 있습니다. – DKnight

1

또 다른 옵션은 계획 캐시를 직접 쿼리하는 것입니다.이 방법은 인덱스를 원하는 쿼리를 얻을 수있는 이점이 있습니다. 관련된 질문이 here on SO입니다. BankZ의 답은 작업을 수행하는 완벽한 SQL 스크립트입니다.

계획이 XML 형식이기 때문에이 쿼리를 사용하면 SQL Server에 테이블 작업 대신 XML 작업을 많이 요청할 것입니다. 그러나 작동하지 않습니다 :-)

SQL Server를 다시 시작하면 기본 누락 색인 테이블과 마찬가지로 계획 캐시가 지워집니다.

+0

Chris에게 답변 할 시간을내어 주셔서 감사합니다. 쿼리를 실행 한 결과 0 행이 반환되었으므로 여기에 더 근본적인 것이 있음을 나타냅니다. 재시작시 계획 캐시를 잃어버린 것에 대해 메모 해 주셔서 감사합니다. -이 경우에는 기록하지 않는 것이 좋지만. – Mark

+0

누락 된 "근본적인 것"은 단순히 SQL에 더 많은 인덱스가 필요하다고 생각하지 않을 수도 있습니다 .-) 실행중인 쿼리에 대한 쿼리 계획을 살펴 보셨습니까? 또한 테이블에 몇 개의 행이 있는지 - SQL Server에서 추가 인덱스가 중요한 작업을 수행하지 않을 것으로 생각하는 행이 너무 적을 수 있습니다. –

+0

안녕하세요, Chris, 맞아도 좋을지 모르지만 지금은 그렇지 않습니다. 내가 사용하는 데이터 테이블은 100 - 2,000 행의 범위를 가지며 사물의 웅장한 구성표에서는 중요하지 않습니다. 기본 및 외래 키만 정의되어 일부 인덱싱 개선을 기대할 수있었습니다. 이 답변에 시간을 내 주셔서 다시 한번 감사드립니다. – Mark

관련 문제