SQL Server에서 '잘못된 열 이름'을 보고하지만 열이 있고 쿼리가 관리 스튜디오를 통해 작동합니다.
제가 좀 곤란한 상황에 처했습니다.는 어떤 일서생쿼있습다에 의해 .C#
code.는 니입다드에서 합니다. 쿼리는 에서 정상적으로 작동합니다.Microsoft SQL Server Management Studio
동일한 데이터베이스에 대해 실행되는 경우.
그러나 코드가 동일한 쿼리를 실행하려고 하면 잘못된 열에 대한 동일한 오류가 발생하고 예외가 발생합니다.이 열을 참조하는 모든 쿼리가 실패했습니다.
문제의 열이 최근에 데이터베이스에 추가되었습니다.은 날짜열다니라고 불리는 입니다.Incident_Begin_Time_ts
.
실패하는 예는 다음과 같습니다.
select * from PerfDiag
where Incident_Begin_Time_ts > '2010-01-01 00:00:00';
기타쿼리와 같은 다른 .Select MAX(Incident_Being_Time_ts);
또한 열이 누락된 것으로 생각하여 코드에서 실행할 때도 실패합니다.
아이디어 있어요?
+ +를 누르면 확인할 수 있습니다.
SQL Server Management Studio에서 Ctrl+Shift+R은 로컬 캐시를 새로 고칩니다.
같은 이름의 테이블이 두 개 있는 것 같습니다.dbo')에 의해 됩니다.dbo.PerfDiag
및Server에 하는 데 예: )에 됩니다.userid.PerfDiag
).
스키마 개체(예: 테이블)에 대한 정규화되지 않은 참조(스키마 이름으로 정규화되지 않은 참조)가 있는 경우 개체 참조를 확인해야 합니다.이름 확인은 지정된 이름을 가진 적절한 유형(테이블)의 개체를 다음 순서로 검색하여 수행됩니다.이름은 첫 번째 일치로 확인됩니다.
- 사용자의 기본 스키마 아래에 있습니다.
- 스키마 'dbo' 아래에 있습니다.
무자격 참조는 위 순서의 첫 번째 일치에 바인딩됩니다.
일반적으로 권장되는 방법은 성능상의 이유로 스키마 개체에 대한 참조를 항상 검증해야 합니다.
참조가 바인딩된 스키마가 저장 프로시저 또는 쿼리를 실행하는 자격 증명에 따라 변경될 수 있으므로, 정규화되지 않은 참조는 저장 프로시저 또는 쿼리에 대한 캐시된 실행 계획을 무효화할 수 있습니다.이렇게 하면 쿼리/저장 프로시저가 다시 컴파일되어 성능이 저하됩니다.다시 컴파일하면 컴파일 잠금이 해제되어 다른 사용자가 필요한 리소스에 액세스할 수 없게 됩니다.
이름 확인은 가능한 버전의 개체('dbo' 소유)로 확인하려면 두 개의 시도를 수행해야 하므로 쿼리 실행 속도가 느려집니다.이것이 일반적인 경우입니다.현재 사용자가 지정된 이름과 유형의 개체를 소유하고 있는 경우에만 시도 하나로 이름을 확인할 수 있습니다.
[추가 노트로 편집]
다른 가능성은 다음과 같습니다(특정 순서가 아님).
- 사용자가 있다고 생각하는 데이터베이스에 연결되어 있지 않습니다.
- 사용자가 생각하는 SQL Server 인스턴스에 연결되어 있지 않습니다.
연결 문자열을 두 번 확인하고 SQL Server 인스턴스 이름과 데이터베이스 이름을 명시적으로 지정하는지 확인합니다.
이 경우 Microsoft SQL Sever Management Studio를 다시 시작하면 잘 작동합니다.
테이블을 삭제/변경하기 전에 트랜잭션 및 SQL 문 내에서 이 메시지를 실행하는 경우에도 이 메시지를 받을 수 있습니다.
결국 마이크로소프트 SQL 서버 Management Studio를 종료하고 재시작하여 문제를 해결했습니다.그러나 다른 경우에는 새로운 쿼리 창을 시작하는 것만으로 충분했습니다.
열과 이름이 같은 변수를 사용하는 경우 '@' 변수 마커를 잊어버렸을 수 있습니다.INSERT 문에서 열로 탐지됩니다.
그냥 똑같은 문제가 있었어요.같은 코드의 다른 부분에서 추가로 사용되는 임시 테이블의 별칭 열 이름을 변경했습니다.어떤 이유에서인지 SQL Server Management Studio에서 이 정보를 캡처하지 못했으며 잘못된 열 이름에 대해 불만을 표시했습니다.
새 쿼리를 만들고 이전 쿼리에서 이 새 쿼리로 SQL 코드를 복사하여 붙여넣은 다음 다시 실행합니다.이것은 환경을 올바르게 새로 고치는 것처럼 보였습니다.
저의 경우 여러 SQL 문을 쿼리할 때 잘못된 ResultSet에서 값을 가져오려고 했습니다.
저의 경우에는 이상한 캐싱 문제였던 것 같습니다.위의 해결책이 작동하지 않았습니다.
코드가 제대로 작동하고 테이블 중 하나에 열을 추가했는데 '잘못된 열 이름' 오류가 표시되고 위의 솔루션이 작동하지 않는 경우 다음을 시도하십시오.먼저 수정된 테이블을 만들기 위한 코드 섹션만 실행한 다음 전체 코드를 실행합니다.
이 답변을 포함하는 것은 구글에서 "잘못된 열 이름 sql"에 대한 상위 결과이고 저는 이 답변을 여기서 보지 못했기 때문입니다.저의 경우, 제가 잘못된 ID를 사용했기 때문에 잘못된 열 이름, ID1을 받았습니다.내 엔티티 프레임워크 C# 코드에 ForeignKey 문이 있습니다.한번은 에 맞게 바꿨습니다.하나() 개체의 ID가 있습니다. 오류가 사라졌습니다.
테이블 값을 사용하여 스칼라 함수를 실행할 때 이 오류가 발생했지만 내 스칼라 함수 RETURN 절의 Select 문에 "FROM table" 부분이 누락되었습니다.: 얼굴 손바닥:
또한 연결 문자열을 변경하는 것을 잊어버리고 로컬에서 변경한 내용을 전혀 모르는 테이블을 묻는 경우에도 발생합니다.
View에 이 문제가 있었지만 정확히 동일한 SQL 코드가 쿼리로 완벽하게 작동했습니다.실제로 SSMS는 쿼리에는 없는 View와 관련된 몇 가지 다른 문제를 제기했습니다.서버에 대한 연결을 닫고 다시 들어가 열 이름을 바꾸려고 했지만 아무 것도 작동하지 않았습니다.대신 저장 프로시저로 쿼리를 생성하고 View가 아닌 Excel을 연결하여 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/7260487/sql-server-reports-invalid-column-name-but-the-column-is-present-and-the-quer
'programing' 카테고리의 다른 글
SQL Server Management Studio에서 테이블의 값을 빠르게 편집하는 방법은 무엇입니까? (0) | 2023.04.29 |
---|---|
Angular2 http.get(), map(), subscribe() 및 관찰 가능한 패턴 - 기본 이해 (0) | 2023.04.29 |
제약 조건을 동시에 충족할 수 없습니다. 제약 조건을 해제하여 복구를 시도합니다. (0) | 2023.04.29 |
목록에서 모든 n번째 항목을 가져오려면 어떻게 해야 합니까? (0) | 2023.04.29 |
WPF 그리드:새 행을 삽입해야 할 경우 행 항목을 쉽게 재조정할 수 있는 방법이 있습니까? (0) | 2023.04.29 |