SQL Server 유효하지 않은 개체 이름-SSMS 테이블 목록에 테이블이 나열 됨


336

Stored Procedure새로 만든 데이터베이스 를 만들려고 합니다. 그러나 SSMSintellisense는 작성된 테이블의 절반 이상을 인식하지 못합니다.

예를 들어 테이블 아래의 왼쪽 열에 테이블이 있지만 새 쿼리 창에 dbo.Room" dbo."를 입력 하면 해당 테이블이 나열되지 않으며 실제로 37 개 테이블 중 17 개만 나열됩니다.

intellisense로 나열된 테이블과 그렇지 않은 테이블 사이에는 차이가 없습니다. dbo.Room을 수동으로 입력하면 밑줄이 표시되고

잘못된 개체 이름 'dbo.Room'..

테이블 설정에서 뭔가를 놓쳤습니까?

업데이트 : 테이블 목록을 새로 고쳤습니다 (여러 번).


11
답변 : [DatabaseName].[Schema].[TableName] SO : 유효하지 않은 객체 이름 sql
Ivan Chau

답변:


703

시험:

Edit-> IntelliSense->Refresh Local Cache

이렇게하면 Intellisense에서 캐시 된 데이터를 새로 고쳐서 사전 지원 및 사전 실행 오류 감지 기능을 제공해야합니다.

참고 : IntelliSense 메뉴를 표시하려면 커서가 쿼리 편집기에 있어야합니다.


8
Intellisense / SSMS가 주기적으로 새로 고쳐 집니까? 아니면 항상 수동 프로세스 여야합니까? (2005 년 SSMS를 기반으로 추측 한 바 있지만 항상 희망 할 수 있습니다.)
Philip Kelley

37
2012 년에는이 작업을 수행해야합니다. 몇 초마다 Intellisense를 자동으로 업데이트 할 수 없습니까?
Matthew Lock

6
데이터베이스에 도달하고 몇 초마다 테이블 / 뷰 정의를 가져와야 할 수도 있습니다.
jinglesthula

8
참고 : IntelliSense 메뉴를 표시하려면 커서가 쿼리 편집기에 있어야합니다.
bradlis7

5
@jinglesthula : 그건 절약 할 데이터베이스 서버를 타격!
Paul

80

Ctrl+ Shift+ R는 관리 스튜디오 2008에서도 인텔리전스를 새로 고칩니다.


이 기능이 없습니다 ... ctrl + shift + R을 누르면 아무 변화가 없습니다
Ibrahim Amer

4
@IbrahimAmer Intellisense 메뉴 옵션을 사용하려면 커서가 쿼리 편집기에 있어야합니다. 인텔리전스 메뉴 옵션을 사용할 수 없으면 바로 가기가 아무 것도 수행하지 않습니다.
Rachael

또한 SQL Server Management Studio를 2014 년에 T-SQL 작동
바히드 아미리

44

선택한 DB가 테이블이있는 데이터베이스인지 확인하십시오. 에 스크립트를 실행하고있었습니다 Master. 내 경우에는로 전환해야했습니다 hr_db.

여기에 이미지 설명을 입력하십시오

신인 실수하지만 누군가를 도울 수 있습니다.


4
서버를 다시 연결할 때마다 어떤 이유도없이 "마스터"로 전환하기 때문에 정직한 것은 신인 실수라고 확신하지 않습니다. :)
Chris Rae

이 경우 쿼리에서 테이블 이름을 완전히 규정하지 않으면 코드가 실행되지 않습니다. 설명 한 문제가 기여 요인이 아닌 경우 OP가 잘못된 긍정 오류 감지를 설명한다고 생각합니다. (확실히, 나는 내가 수색 할 때 가능성을 배제하고 여기에서 상처를 입었다.)
Dodecaphone

정확히 내 문제. SMS에서 데이터베이스 컨텍스트 또는 다른 단서가 변경되었다는 표시는 없습니다.
Daniel Black

1
@ChrisRae : master사용자 로그인의 기본 데이터베이스로 설정되어 있기 때문 입니다. 그냥 사용하는 것으로 변경 sp_defaultdb다른 데이터베이스로하면 로그인 할 때 다른 데이터베이스를 SSMS에서 선택되는 것을 가지고 (도에 의해 SSMS에서 설정할 수 있습니다. Security > Logins > your user login > Properties > Default database)
AXD

36

새 SQL Server 개체를 만들면 새로 만든 개체가 IntelliSence 로컬 캐시에서 업데이트되지 않으므로이 개체 아래에 빨간색 선이 표시됩니다. 따라서 SSMS IntelliSence 로컬 캐시를 새로 고치기 만하면 새로 고치면 IntelliSence새로 생성 된 개체가 캐시에 자동으로 추가되고 빨간색 선이 사라집니다. 이 시도

Edit -> IntelliSense -> Refresh Local Cache 또는 Ctrl+ Shift+R

여기에 이미지 설명을 입력하십시오


1
이 기능이 없습니다 ... ctrl + shift + R을 누르면 아무 변화가 없습니다
Ibrahim Amer

4
@IbrahimAmer Intellisense 메뉴 옵션을 사용하려면 커서가 쿼리 편집기에 있어야합니다. 인텔리전스 메뉴 옵션을 사용할 수 없으면 바로 가기가 아무 것도 수행하지 않습니다.
Rachael

18

필자의 경우 IntelliSense 캐시는 완전히 다른 데이터베이스에 대한 객체 정보를 나열했습니다. SSMS에서 "새 쿼리"버튼을 클릭하면 서버의 기본 카탈로그에 대한 쿼리가 열리고 해당 쿼리 편집기는 항상 해당 데이터베이스 만 사용합니다. 캐시를 새로 고치면 아무것도 변경되지 않았습니다. SSMS를 다시 시작해도 아무런 변화가 없습니다. 데이터베이스를 변경해도 아무런 변화가 없습니다.

실제로 사용하려는 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 해당 컨텍스트 메뉴에서 "새 쿼리"를 선택하여 쿼리를 작성했습니다. 이제 SSMS는 IntelliSense에 올바른 개체를 사용합니다.


3
이것은 나의 경우이기도했다. 공유해 주셔서 감사합니다.
Behrooz Karjoo

1
datbaseName 사용하기 전에 쿼리를 실행하면 컨텍스트를 설정할 수도 있습니다.
Behrooz Karjoo

@BehroozKarjoo 그래, 나는 그것을 시도했다. 항상 작동하지는 않습니다. 그것을 재현 할 수 있다면, Microsoft Connect 나 다른 곳에 올려 놓을 것입니다. 나는 그들이 그것을 WONTFIX 또는 동등한 자극으로 표시 할 것이라고 확신하지만, 나는 그것을보고 할 것입니다.
베이컨 비트

완벽하게 작동했습니다! 감사합니다! :)
Sean

SSMS를 다시 시작하고 새 쿼리를 마우스 오른쪽 버튼으로 클릭하면 나를 위해 일했습니다.
Hitsa

10

문제의 표가 존재한다고 확신하십니까?

개체 탐색기에서 테이블 뷰를 새로 고쳤습니까? "tables"폴더를 마우스 오른쪽 버튼으로 클릭하고 F5키를 누르면 됩니다.

Intellisense 캐시를 다시 만들어야 할 수도 있습니다.

메뉴 경로를 따라 수행 할 수 있습니다 : 편집-> IntelliSense-> 로컬 캐시 새로 고침


7

해결책은 다음과 같습니다.

  • 메뉴 Query를 클릭하십시오.
  • 그런 다음 '데이터베이스 변경'을 클릭하십시오.
  • 적절한 데이터베이스 이름을 선택하십시오.

그게 다야.


6

이 구문 문제를 사용할 때도 같은 문제가 해결되었습니다.

통사론:

Use [YourDatabaseName]
Your Query Here

4

SQL Server 2008 Enterprise에 SP3을 설치 한 후에도 여전히 "문제"입니다. Ctrl+ Shift+ R사람들처럼 저를 위해이 문제를 해결 말하고있다.


이 기능이 없습니다 ... ctrl + shift + R을 누르면 아무 변화가 없습니다
Ibrahim Amer

@IbrahimAmer Intellisense 메뉴 옵션을 사용하려면 커서가 쿼리 편집기에 있어야합니다. 인텔리전스 메뉴 옵션을 사용할 수 없으면 바로 가기가 아무 것도 수행하지 않습니다.
Rachael

3

SSMS 2016에서 해결되었습니다.

비슷한 문제가 있었지만 Intellisense는 편집 메뉴에 없었습니다.

수정 된 것처럼 Intellisens를 켜고 끄고 SQL 편집기를 마우스 오른쪽 버튼으로 클릭하고 'Intellisense Enabled'를 클릭하십시오. '인텔리전스 활성화'를 다시 마우스 오른쪽 버튼으로 클릭하여 다시 켜십시오. Ctr Q, 나는 또한 이것을한다.

이것은 문제를 해결했으며 편집 메뉴에서 Intellisense를 얻는 것을 알고 있습니다.


2

방금 SMSS를 닫았다가 다시 열어야했습니다. 로컬 캐시 새로 고침을 시도했지만 작동하지 않았습니다.


1

시도 했습니까? 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 "새로 고침"을 클릭하십시오


예, 나는 그것을 시도했고, 거기에 있다고 확신합니다. 레코드를 추가하고 수정할 수 있습니다 .dbo.Room에서 Select *를 수행했지만 여전히 테이블의 내용을 출력하는 밑줄이 있습니다. 재부팅을 시도하겠습니다.
Richbits

1

이 질문에 이미 답변되었지만 다른 해결책이 있음을 알고 있습니다.

테이블을 다시 작성하지 않고 삭제하는 스크립트를 작성하는 경우 나중에 참조하려고하면 해당 테이블이 누락 된 것으로 표시됩니다.

참고 : 지속적으로 실행되는 스크립트에서는 이런 일이 발생하지 않지만 매번 입력하는 것보다 재귀 쿼리가있는 스크립트를 사용하는 것이 더 쉬운 경우가 있습니다.


0

ODBC 및 Firedac-Connection에서 ODBC 및 SQL-Server-Authentication 관련 문제가 발생했습니다.

솔루션 : Param MetaDefSchema를 sqlserver username으로 설정해야했습니다. FDConnection1.Params.AddPair ( 'MetaDefSchema', self.FDConnection1.Params.UserName);

wikidoc sais : MetaDefSchema = 기본 스키마 이름. 디자인 타임 코드 >> excludes << !! MetaDefSchema와 동일한 경우 SQL-Server-Authenticatoinname 오브젝트의 스키마 이름

설정하지 않으면 자동 코더가 다음을 작성합니다. dbname.username.tablename-> 유효하지 않은 오브젝트 이름

MetaDefSchema를 sqlserver-username으로 설정하면 dbname.tablename-> works!

http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC) 에서 embarcadero-doc도 참조하십시오.

희망, 그것은 다른 사람을 돕는다 ..

안부, 루츠


0

Azure Data Studio에서 "cmd + shift + p"를 누르고 "intellisense"를 입력하면 인텔리전스 캐시를 새로 고치는 옵션이 표시됩니다.


0

모델을 작성한 후 마이그레이션을 작성하는 것을 잊지 마십시오

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