codememo

SQL Server:잘못된 열 이름

tipmemo 2023. 4. 18. 22:47
반응형

SQL Server:잘못된 열 이름

기존 SQL Server 저장 프로시저를 수정하는 중입니다.테이블에 두 개의 새 열을 추가하고 저장 프로시저를 수정하여 이 두 개의 열도 선택했습니다.테이블에서 열을 사용할 수 있지만 다음과 같은 오류가 계속 표시됩니다.

잘못된 열 이름 '포함_GSTALL'

여기에 이미지 설명 입력

여기 무슨 일 있어요?

이런 일이 있을 때마다 ++ShiftR를 눌러 새로 고칩니다.intellisense쿼리 창을 닫고(필요한 경우 저장), 보통 정상적으로 작동하는 새 세션을 시작합니다.

문자열을 단일 따옴표 대신 큰따옴표로 묶는 경우에도 발생할 수 있습니다.

ALTER Table 열을 선택하고 동일한 스크립트의 새 열을 포함하는 테이블을 즉시 업데이트할 경우.반드시 사용하세요.GO표를 바꾸다

ALTER TABLE Location 
ADD TransitionType SMALLINT NULL
GO   

UPDATE Location SET TransitionType =  4

ALTER TABLE Location 
    ALTER COLUMN TransitionType SMALLINT NOT NULL

에러가 나서 왔습니다.WHERE 조건의 값을 지정할 때 작은따옴표(') 대신 큰따옴표(")를 사용했기 때문입니다.미래의 나를 위해 이 글을 쓰는 것.

이 오류는 다음과 같이 캡슐화된 SQL 문에서도 발생할 수 있습니다.

DECLARE @tableName nvarchar(20) SET @tableName = 'GROC'

DECLARE @updtStmt nvarchar(4000)

SET @updtStmt = 'Update tbProductMaster_' +@tableName +' SET department_str = ' + @tableName exec sp_supdtql @updtStmt

다음과 같이 파라미터 "@tableName"을 캡슐화하기 위한 따옴표가 누락된 경우에만 검출됩니다.

SET @updtStmt = 'Update tbProductMaster_' +@tableName +' SET department_str = '' + @tableName + ''' '' '''''

감사해요.

인텔리센스는 자동으로 갱신되지 않으므로 이를 전적으로 신뢰하지 마십시오.

그냥 해봤어요.로컬 테이블을 생성하기 위해 문을 실행하면 이 열 이름이 존재함을 받아들입니다.에디터 창에서 테이블 생성 문에 표시를 하고 execute를 클릭하기만 하면 됩니다.

뷰를 작성할 때도 같은 에러가 발생했습니다.

문제 없이 실행되는 선택 쿼리를 상상해 보십시오.

select id
from products

동일한 쿼리에서 보기를 생성하려고 하면 다음과 같은 오류가 발생합니다.

create view app.foobar as
select id
from products

16,1, 프로시저 207, 16, 1, foobar, 2
id는 'id'로 하다.

저에게는 범위 지정 문제로 판명되었습니다. 뷰가 다른 스키마로 작성되고 있습니다.products이치노 ,, 용을 사용합니다.dbo.products한 것이 products.

절차를 따르는 것이 이 문제를 해결하는 데 도움이 되었지만 왜 그런지 모르겠다.

  1. 메시지의 행에 의해 주어진 문제의 코드를 잘라냅니다.
  2. 쿼리를 저장합니다(예: 파일에 저장).
  3. 코드를 이전 위치에 붙여넣습니다.
  4. 쿼리를 다시 저장합니다.

동일한 쿼리를 실행하는 것처럼 보여도 이 오류를 발생시키지 않습니다.

There can be many things:
First attempt, make a select of this field in its source table;
Check the instance of the sql script window, you may be in a different instance;
Check if your join is correct;
Verify query ambiguity, maybe you are making a wrong table reference
Of these checks, run the T-sql script again

[Image of the script SQL][1]
  [1]: https://i.stack.imgur.com/r59ZY.png`enter code here

코드(C#)측에서 쿼리를 실행할 때도 같은 문제가 발생했습니다.위의 오류가 발생한 테이블의 컬럼에는 이미 추가된 'default value or binding'(테이블 디자인을 확인했을 때)이 있습니다.그래서 쿼리에 의해 삽입되는 데이터로서 컬럼과 대응하는 값을 삭제했습니다.

Blazor와 함께 일하고 있는데 인용문을 쓰는 것을 잊었습니다.

SqlDataAdapter da = newselect" 테이블에서 *를 선택합니다. 여기서 열 = {value} , con);

할 필요가 있다

SqlDataAdapter da = newselect"* from table"여기서 열 = '{value}', con);

올바른 생각을 내려보낸 해리의 답변에 감사드립니다.

테이블 새로 고침 또는 sql 서버 닫기 및 열기 작업

  • 테이블을 새로 고칩니다.
  • SQL 서버를 재시작합니다.
  • Query의 철자 오류에 주의하십시오.

join을 할 때 'Join을 실행하면 'Join'이라는 점에 MSSQL가입하는 테이블이 가입하는 테이블 옆에 없는 경우 는 "Invalid Column Name"을 슬로우합니다..table1.row1 ★★★★★★★★★★★★★★★★★」table3.row3에러는 아직 발생하고 있습니다.쿼리 내의 테이블을 다시 주문할 때까지 에러는 사라지지 않았습니다.성명서의 표의 순서가 중요한 것 같습니다.

+-------------+    +-------------+    +-------------+    
| table1      |    | table2      |    | table3      |    
+-------------+    +-------------+    +-------------+    
| row1 | col1 |    | row2 | col2 |    | row3 | col3 |    
+------+------+    +------+------+    +------+------+    
| ...  | ...  |    | ...  | ...  |    | ...  | ...  |    
+------+------+    +------+------+    +------+------+    

SELECT * FROM table1, table2 LEFT JOIN table3 ON row1 = row3; --throws an error
SELECT * FROM table2, table1 LEFT JOIN table3 ON row1 = row3; --works as expected

코멘트가 부족하기 때문에 새로운 답변을 작성하겠습니다.Nick Reed의 답변은 쿼리의 테이블 순서에 관한 것입니다.

JOIN2번서서 ON할 수 .첫 에서는,

SELECT * FROM table1, table2 LEFT JOIN table3 ON row1 = row3; --throws an error

table2 ★★★★★★★★★★★★★★★★★」table3입니다.JOIN ,는ON은 절을 .row1되어 있습니다.table1이 에러가 발생한 것입니다.

이런 일이 제게 일어났을 때, 예전 SQL Server 관리 스튜디오를 그만두고 재기동한 것이 도움이 되었습니다.

DbUp을 사용하여 테이블에 열을 추가하고 동일한 스크립트에서 해당 열의 UPDATE를 추가했는데 "invalid column <column name>"이라고 되어 있었습니다.

두 문을 다른 스크립트로 나누면 문제가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/18941514/sql-server-invalid-column-name

반응형