이름이 같은 테이블이 두 개있는 것 같습니다. 하나는 스키마 'dbo'( dbo.PerfDiag)가 소유하고 다른 하나는 SQL Server에 연결하는 데 사용되는 계정의 기본 스키마 (예 :) 가 소유합니다 userid.PerfDiag.
스키마 객체 (예 : 테이블)에 대한 규정되지 않은 참조 (스키마 이름으로 규정되지 않은 참조)가있는 경우 객체 참조를 확인해야합니다. 이름 확인은 지정된 이름을 가진 적절한 유형 (테이블)의 개체를 다음 순서로 검색하여 발생합니다. 이름은 첫 번째 일치로 확인됩니다.
- 사용자의 기본 스키마 아래.
- 스키마 'dbo'에서.
규정되지 않은 참조는 위 순서에서 첫 번째 일치 항목에 바인딩됩니다.
일반적으로 권장되는 방법 으로 성능상의 이유로 항상 스키마 개체에 대한 참조를 한정 해야합니다 .
정규화되지 않은 참조는 저장 프로 시저 또는 쿼리를 실행하는 자격 증명에 따라 참조가 바인딩 된 스키마가 변경 될 수 있으므로 저장 프로 시저 또는 쿼리에 대한 캐시 된 실행 계획을 무효화 할 수 있습니다. 이로 인해 쿼리 / 저장 프로 시저의 재 컴파일이 발생하여 성능이 저하됩니다. 재 컴파일은 컴파일 잠금을 해제하여 다른 사용자가 필요한 리소스에 액세스하는 것을 차단합니다.
이름 확인은 'dbo'가 소유 한 개체의 가능한 버전을 확인하기 위해 두 개의 프로브를 만들어야하므로 쿼리 실행 속도가 느려집니다. 이것은 일반적인 경우입니다. 단일 프로브가 이름을 확인하는 유일한 경우는 현재 사용자가 지정된 이름 및 유형의 개체를 소유 한 경우입니다.
[추가 참고 사항 수정]
다른 가능성은 다음과 같습니다 (특정 순서 없음).
- 자신이 생각하는 데이터베이스에 연결되어 있지 않습니다.
- 자신이 생각하는 SQL Server 인스턴스에 연결되어 있지 않습니다.
연결 문자열을 다시 확인하고 SQL Server 인스턴스 이름과 데이터베이스 이름을 명시 적으로 지정했는지 확인합니다.