2013-09-22 20 views
42

Sto lavorando alla modifica della stored procedure SQL Server esistente. Ho aggiunto due nuove colonne alla tabella e ho modificato anche la procedura memorizzata per selezionare anche queste due colonne. Anche se le colonne sono disponibili nella tabella SQL Server continua a dare questo errore:SQL Server: Nome colonna non valido

Invalid column name 'INCL_GSTAMOUNT'

enter image description here

Qualcuno può dirmi che cosa c'è che non va qui?

+1

l'hai eseguito - ottieni questo errore? intellisense può richiedere del tempo per aggiornare? – gordatron

+1

hai ricompilato la stored procedure? – Lokesh

risposta

117

Ogni volta che questo succede a me, premo Ctrl + Maiusc + R che rinfresca intellisense, chiudere la finestra di query (salva se necessario), quindi avviare una nuova sessione che di solito funziona abbastanza bene.

+4

Ho trovato sufficiente la sequenza di tasti (grazie!): Non è necessario chiudere la finestra di query – sparrow

+0

Forse le cose sono cambiate da quando ho postato questo, buono a sapersi. – Ric

2

IntelliSense non è automaticamente aggiornati e non si deve fare pieno affidamento su quel

0

con tavolo di aggiornamento o di un server SQL chiudere e aprire questo lavoro

32

Potrebbe anche accadere se mettere stringa tra virgolette invece di singolo.

+0

Questo è stato il motivo nel mio caso, puoi spiegare la ragione di questo – ImranNaqvi

+0

Ugh ... GRAZIE! Così stupido. Aveva questo problema con l'interrogazione per l'intervallo di date con le date tra virgolette. –

2

Questo errore può verificarsi anche in istruzioni SQL incapsulate, ad es.

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

DECLARE @updtStmt nvarchar(4000)

SET @updtStmt = 'Update tbProductMaster_' [email protected] +' SET department_str = ' + @tableName exec sp_executesql @updtStmt

solo per scoprire che ci sono citazioni manca per incapsulare il "@TableName" parametro ulteriormente come i seguenti:

SET @updtStmt = 'Update tbProductMaster_' [email protected] +' SET department_str = ''' + @tableName + ''' '

Grazie

1

mi è stato sempre lo stesso errore durante la creazione di una vista .

immaginare una query di selezione che esegue senza problemi:

select id 
from products 

Il tentativo di creare una vista dalla stessa query produrrebbe un errore:

create view app.foobar as 
select id 
from products 

Msg 207, Level 16, State 1, Procedure foobar, Line 2
Invalid column name 'id'.

Per me si è rivelato essere un problema di scoping; nota che la vista viene creata in uno schema diverso. La specifica dello schema della tabella products ha risolto il problema. Ad esempio .. utilizzando dbo.products anziché solo products.

-1

Ho appena provato. Se si esegue l'istruzione per generare la tabella locale, lo strumento accetterà che questo nome di colonna esista. Contrassegna l'istruzione di generazione della tabella nella finestra dell'editor e fai clic su Esegui.

0

Ho avuto un problema simile.

Problema: esisteva un trigger sulla tabella che scriveva le modifiche a una tabella del registro di controllo. Le colonne mancavano nella tabella del registro di controllo.

+1

È necessario elaborare più su una soluzione per risolvere il problema sulla questione in modo che questa sia una risposta valida. Grazie. – BogdanC

0

La seguente procedura mi ha aiutato a risolvere questo problema ma non so perché.

  1. Tagliare il codice in questione dato dalle linee nel messaggio
  2. Salvare la query (ad esempio per file)
  3. incollare il codice al punto in cui si trovava prima
  4. Anche in questo caso salvare la query

Anche se sembra essere la stessa query, l'esecuzione non ha generato questo errore

Problemi correlati