sql server ongeldige objectnaam – maar tabellen worden vermeld in SSMS-tabellenlijst

Ik probeer een Stored Procedurete maken voor een nieuw aangemaakte database. De SSMSintellisense herkent echter niet meer dan de helft van de tabellen die zijn gemaakt.

In de linkerkolom onder tabellen heb ik bijvoorbeeld een tabel dbo.Room, wanneer ik “dbo.” typ in het nieuwe queryvenster, die tabel wordt niet vermeld, in feite worden slechts 17 van de 37 tabellen vermeld.

Ik zie geen verschil tussen de tabellen die door intellisense worden vermeld en die niet. Als ik handmatig dbo.Room typ, is het onderstreept, met een fout van

Ongeldige objectnaam ‘dbo.Room’..

Heb ik iets gemist bij het opzetten van de tafels?

UPDATE: ik heb geprobeerd de lijst met tabellen te vernieuwen (meerdere keren)


Antwoord 1, autoriteit 100%

Probeer:

Bewerken-> IntelliSense-> Lokale cache vernieuwen

Hiermee zouden de gegevens die door Intellisense in de cache zijn opgeslagen, moeten worden vernieuwd om typeahead-ondersteuning en detectie van fouten voorafgaand aan de uitvoering te bieden.

OPMERKING: uw cursor moet in de query-editor staan om het IntelliSense-menu zichtbaar te maken.


Antwoord 2, autoriteit 11%

Ctrl+ Shift+ Rververst ook intellisense in managementstudio 2008.


Antwoord 3, autoriteit 10%

Zorg ervoor dat de geselecteerde DB die is waar de tabel zich bevindt. Ik draaide het script op Master. In mijn geval moest ik overschakelen naar hr_db.

Rookie fout, maar kan iemand helpen.


Antwoord 4, autoriteit 5%

Nadat u een nieuw SQL Server-object hebt gemaakt, wordt uw nieuw gemaakte object niet bijgewerkt in de Local Cache Intellisentie en hierdoor verschijnt het een rode lijn onder dat object. U hoeft dus alleen SSMS Intellisence Local Cache te vernieuwen en zodra u deze vernieuwt, IntelliSencezal automatisch nieuw gecreëerd object toevoegen in de cache en de rode lijn verdwijnt. Probeer dit

Edit -> IntelliSense -> Refresh Local Cacheof CTRL + SHIFT + R


Antwoord 5, Autoriteit 2%

In mijn geval, de IntelliSense-cache vermeldde objectinformatie voor een geheel andere database. Als ik op de knop 'Nieuwe query' in SSMS klikte, opent het een vraag naar mijn standaardcatalogus op de server en dat de query-editor altijd alleen die database gebruikt. Verfrissende de cache veranderde niets. Het opnieuw opstarten van SSMS veranderde niets. Het wijzigen van de database heeft niets gewijzigd.

Ik heb uiteindelijk een query gemaakt door met de rechtermuisknop te klikken op de database die ik eigenlijk wilde gebruiken en kiezen "Nieuwe query" uit dat contextmenu. Nu gebruikt SSMS de juiste objecten voor IntelliSense.


Antwoord 6

Ben je er zeker van dat de betreffende tabel bestaat?

Hebt u de tabelweergave in de objectverkenner vernieuwd? Dit kan worden gedaan door met de rechtermuisknop op de map "Tables" te klikken en op de toets F5 te drukken.

Mogelijk moet u ook de IntelliSense-cache herhalen.

Dit kan worden gedaan door de menu-route te volgen: Bewerken - & GT; IntelliSense - & GT; Vernieuw de lokale cache


Antwoord 7

De oplossing is:

  • Klik op Menu Query,
  • Klik vervolgens op 'Database wijzigen'.
  • Selecteer uw juiste database-naam.

Dat is het.


Antwoord 8

Hetzelfde probleem met mij toen ik dit syntaxisprobleem gebruikte opgelost.

Syntaxis:

Use [YourDatabaseName]
Your Query Here

Antwoord 9

Zelfs na installatie van SP3 op SQL Server 2008 Enterprise is dit nog steeds een "probleem". Ctrl+Shift+Rzoals iedereen heeft gezegd heeft dit probleem voor mij opgelost.


Antwoord 10

Opgelost voor SSMS 2016.

Had een soortgelijk probleem, maar Intellisense stond niet in het menu Bewerken.

Wat het leek te verhelpen, was Intellisens in- en uitschakelen, rechtsklik op de SQL-editor en klik op 'Intellisense ingeschakeld'. Klik nogmaals met de rechtermuisknop op 'Intellisense Enabled' om het weer in te schakelen. Ctr Q, ik doe dit ook.

Dit loste het probleem op, en ik weet ook dat je de Intellisense in het menu Bewerken kunt krijgen.


Antwoord 11

heb je het geprobeerd: klik met de rechtermuisknop op de database en klik op "vernieuwen"


Antwoord 12

Ik moest SMSS gewoon sluiten en opnieuw openen. Ik heb geprobeerd lokale cache te vernieuwen en dat werkte niet.


Antwoord 13

Ik realiseer me dat deze vraag al is beantwoord, maar ik had een andere oplossing:

Als u een script schrijft waarin u de tabellen laat vallen zonder ze opnieuw te maken, worden die tabellen als ontbrekend weergegeven als u er later naar probeert te verwijzen.

Opmerking: dit zal niet gebeuren met een script dat constant wordt uitgevoerd, maar soms is het gemakkelijker om een script te hebben met query's om te herhalen dan om ze elke keer te typen.


Antwoord 14

Druk in azure data studio op "cmd+shift+p" en typ "intellisense", dan ziet u een optie om de intellisense-cache te vernieuwen.


Antwoord 15

Ik kwam het probleem tegen met :
ODBC en SQL-Server-authenticatie in ODBC
en
Firedac-verbinding

Oplossing:
Ik moest de Param MetaDefSchema instellen op sqlserver gebruikersnaam:
FDConnection1.params.addpair ('metadefschema', self.fdconnection1.params.username);

De Wikidoc Sais:
Metadefschema = standaard schema naam. De Design Time Code & GT; & GT; exclusief & lt; & lt; !! De schema-naam van de SQL-SERVER-authenticatoinname van het object als het gelijk is aan metadefschema.

Zonder instelling creëert de automatische codeer:
dbname.username.tablename - & GT; Ongeldige objectnaam

Met het instellen van Metadefschema naar SQLSERVER-gebruikersnaam:
dbname.tablename - & GT; WERKEN!

Zie ook de Embarcadero-Doc op:
http://docwiki.embarcadero.com/radstudio/rio/en/connect_to_microsoft_sql_server_ (Firedac)

Hoop, het helpt iemand anders ..

Regards, Lutz


Antwoord 16

Vergeet niet om uw migraties te maken na het schrijven van de modellen


Antwoord 17

Voor mij had ik hernoemen van

[Database_LS].[schema].[TableView]

Naar

[Database_LS].[Database].[schema].[TableView]

Antwoord 18

Ik werkte aan Azure SQL Server. Voor het opslaan van de gegevens die ik tabelwaarden heb gebruikt Param
zoals

DECLARE @INTERMEDIATE_TABLE3 TABLE { 
     x int;
 }

Ik ontdekte de fout schriftelijk op de query's

SELECT
    *
FROM 
    [@INTERMEDIATE_TABLE3]
WHERE 
    [@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3

Tijdens het opvragen van de kolommen is het oké om er accolades in te zetten, zoals [@INTERMEDIATE_TABLE3].[ConsentDefinitionId]maar wanneer alleen naar de tabelwaardeparam wordt verwezen, zouden er geen params mogen zijn. Het moet dus worden gebruikt als @INTERMEDIATE_TABLE3

Dus de code moet nu worden gewijzigd in

SELECT
    *
FROM 
    @INTERMEDIATE_TABLE3
WHERE 
    [@INTERMEDIATE_TABLE3].[ConsentDefinitionId] = 3

Other episodes