nombre de objeto no válido del servidor sql, pero las tablas se enumeran en la lista de tablas SSMS

336

Estoy intentando crear un Stored Procedurepara una base de datos recién creada. Sin embargo, el SSMSintellisense no reconoce más de la mitad de las tablas que se han creado.

Por ejemplo, mientras que en la columna de la izquierda debajo de las tablas tengo una tabla dbo.Room, cuando escribo " dbo." en la nueva ventana de consulta, esa tabla no aparece, de hecho, solo 17 de las 37 tablas aparecen.

No puedo ver ninguna diferencia entre las tablas enumeradas por intellisense y las que no. Si escribo manualmente dbo.Room, está subrayado, con un error de

Nombre de objeto no válido 'dbo.Room' ..

¿Me he perdido algo al poner las mesas?

ACTUALIZACIÓN: He intentado actualizar la lista de tablas (varias veces)

Richbits
fuente
11
Respuesta que funciona: [DatabaseName].[Schema].[TableName] SO: Nombre de objeto no válido sql
Ivan Chau

Respuestas:

703

Tratar:

Edit-> IntelliSense->Refresh Local Cache

Esto debería actualizar los datos almacenados en caché por Intellisense para proporcionar soporte de escritura anticipada y detección de errores previos a la ejecución.

NOTA: su cursor debe estar en el editor de consultas para que el menú IntelliSense esté visible.

Adam Robinson
fuente
8
¿Intellisense / SSMS se actualiza periódicamente? ¿O debe ser siempre un proceso manual? (Tengo mi conjetura basada en SSMS en 2005, pero siempre se puede esperar.)
Philip Kelley
37
increíble que en 2012 necesites hacer esto. ¿No podrían actualizar Intellisense cada pocos segundos automáticamente?
Matthew Lock
66
Eso puede requerir golpear la base de datos y extraer las definiciones de tabla / vista cada pocos segundos.
jinglesthula
8
NOTA: su cursor debe estar en el editor de consultas para que el menú IntelliSense esté visible.
bradlis7
55
@jinglesthula: ¡Eso me ahorraría golpear el servidor de la base de datos!
Paul
80

Ctrl+ Shift+ también Ractualiza intellisense en Management Studio 2008.

Zielyn
fuente
No tengo esta característica ... cuando presiono ctrl + shift + R nada cambia
Ibrahim Amer
44
@IbrahimAmer Su cursor debe estar en un editor de consultas para que la opción de menú Intellisense esté disponible. Si la opción de menú intellisense no está disponible, el acceso directo no hará nada.
Rachael
También funciona para T-SQL en SQL Server Management Studio 2014
Vahid Amiri
44

Asegúrese de que la base de datos seleccionada es la que está la tabla. Estaba ejecutando el script Master. En mi caso, tuve que cambiar a hr_db.

ingrese la descripción de la imagen aquí

Error de novato pero podría ayudar a alguien.

Daniel Segura
fuente
44
No estoy seguro de que sea un error de novato, para ser honesto, ya que cada vez que vuelve a conectar el servidor, por alguna razón cambia a "maestro" sin razón obvia. :)
Chris Rae
Si ese fuera el caso y la consulta no calificara completamente los nombres de la tabla, el código no se ejecutaría. Creo que el OP describía la detección de errores falsos positivos cuando el problema que describió no era un factor contribuyente. (Ciertamente, ya había descartado la posibilidad cuando fui a buscar y terminé aquí.)
Dodecaphone
Exactamente mi problema. Los SMS no indican que haya cambiado el contexto de la base de datos ni ninguna otra pista.
Daniel Black
1
@ChrisRae: Eso se debe a que masterestá configurada como la base de datos predeterminada para su inicio de sesión de usuario. Simplemente cambie ese uso sp_defaultdba otra base de datos para que la otra base de datos se seleccione en SSMS cuando inicie sesión. (También se puede configurar en SSMS Security > Logins > your user login > Properties > Default database)
AxD
36

una vez que crea un nuevo objeto de SQL Server, su objeto recién creado no se actualiza en IntelliSence Local Cache y, debido a esto, muestra una línea roja debajo de ese objeto. Por lo tanto, solo necesita actualizar el SSMS IntelliSence Local Cache y una vez que lo actualice, IntelliSenceagregará automáticamente el objeto recién creado en el caché y la línea roja desaparecerá. prueba esto

Edit -> IntelliSense -> Refresh Local Cache o Ctrl+ Shift+R

ingrese la descripción de la imagen aquí

Nagaraj S
fuente
1
No tengo esta característica ... cuando presiono ctrl + shift + R nada cambia
Ibrahim Amer
44
@IbrahimAmer Su cursor debe estar en un editor de consultas para que la opción de menú Intellisense esté disponible. Si la opción de menú intellisense no está disponible, el acceso directo no hará nada.
Rachael
18

En mi caso, el caché IntelliSense enumeraba información de objetos para una base de datos completamente diferente. Si hice clic en el botón "Nueva consulta" en SSMS, abriría una consulta a mi catálogo predeterminado en el servidor y ese editor de consultas siempre usaría esa base de datos. Actualizar el caché no cambió nada. Reiniciar SSMS no cambió nada. Cambiar la base de datos no cambió nada.

Terminé creando una consulta haciendo clic derecho en la base de datos que realmente quería usar y eligiendo "Nueva consulta" en ese menú contextual. Ahora SSMS usa los objetos correctos para IntelliSense.

Pedacitos de tocino
fuente
3
Este fue mi caso también. Gracias por compartir.
Behrooz Karjoo
1
USE datbaseName GO antes de que la consulta también funcione en la configuración del contexto
Behrooz Karjoo
@BehroozKarjoo Sí, lo intenté. No siempre parece funcionar. Si pudiera reproducirlo, lo pondría en Microsoft Connect o algo así. Estoy seguro de que lo marcarían como WONTFIX o algo igualmente irritante, pero lo reportaría.
Bacon Bits
Funcionó perfecto! ¡Gracias! :)
Sean Stayns
Reiniciar SSMS y hacer clic derecho en la nueva consulta funcionó para mí.
Hitsa
10

¿Estás seguro de que existe la tabla en cuestión?

¿Ha actualizado la vista de tabla en el Explorador de objetos? Esto se puede hacer haciendo clic derecho en la carpeta "tablas" y presionando la F5tecla.

También es posible que deba actualizar la caché Intellisense.

Esto se puede hacer siguiendo la ruta del menú: Editar -> IntelliSense -> Actualizar caché local

John Sansom
fuente
7

La solucion es:

  • Haga clic en el menú Consulta,
  • luego haga clic en 'Cambiar base de datos'.
  • Seleccione su nombre de base de datos apropiado.

Eso es.

Tono FRL
fuente
6

El mismo problema conmigo cuando usé este problema de sintaxis resuelto.

Sintaxis:

Use [YourDatabaseName]
Your Query Here

fuente
4

Incluso después de instalar SP3 en SQL Server 2008 Enterprise, esto sigue siendo un "problema". Ctrl+ Shift+ Rcomo todos han estado diciendo resolvió este problema para mí.

demmith
fuente
No tengo esta característica ... cuando presiono ctrl + shift + R nada cambia
Ibrahim Amer
@IbrahimAmer Su cursor debe estar en un editor de consultas para que la opción de menú Intellisense esté disponible. Si la opción de menú intellisense no está disponible, el acceso directo no hará nada.
Rachael
3

Resuelto para SSMS 2016.

Tuve un problema similar, pero Intellisense no estaba en el menú Editar.

Lo que pareció solucionarlo fue activar y desactivar Intellisens, hacer clic derecho en el editor SQL y hacer clic en 'Intellisense Enabled'. Haga clic derecho nuevamente en 'Intellisense Enabled' para volver a encenderlo. Ctr Q, yo también hago esto.

Esto resolvió el problema, y ​​también sé obtener el Intellisense en el menú Editar.

Eric Yeoman
fuente
2

Solo tenía que cerrar SMSS y volver a abrirlo. Intenté Actualizar Local Cache y eso no funcionó.

bocadillos
fuente
1

intentaste: haz clic derecho en la base de datos y haz clic en "actualizar"

KM.
fuente
Sí, lo he intentado, estoy seguro de que está allí, puedo agregar registros y modificar, etc. Acabo de hacer un Select * de dbo.Room y, aunque todavía tengo el subrayado, generó el contenido de la tabla. Voy a intentar reiniciar.
Richbits 01 de
1

Me doy cuenta de que esta pregunta ya ha sido respondida, sin embargo, tenía una solución diferente:

Si está escribiendo un script en el que suelta las tablas sin volver a crearlas, esas tablas se mostrarán como faltantes si intenta hacer referencia a ellas más adelante.

Nota: Esto no va a suceder con un script que se ejecuta constantemente, pero a veces es más fácil tener un script con consultas para volver a hacer referencia que escribirlas cada vez.

Troy Loberger
fuente
0

Me encontré con el problema con: ODBC y autenticación de servidor SQL en ODBC y Firedac-Connection

Solución: Tuve que configurar el parámetro Param MetaDefSchema en nombre de usuario sqlserver: FDConnection1.Params.AddPair ('MetaDefSchema', self.FDConnection1.Params.UserName);

El wikidoc dice: MetaDefSchema = Nombre de esquema predeterminado. El código de tiempo de diseño >> excluye << !! el nombre del esquema del objeto SQL-Server-Authenticatoinname si es igual a MetaDefSchema.

sin configuración, el codificador automático crea: dbname.username.tablename -> nombre de objeto no válido

Con la configuración de MetaDefSchema en sqlserver-username: dbname.tablename -> funciona!

Ver también el documento de embarcadero en: http://docwiki.embarcadero.com/RADStudio/Rio/en/Connect_to_Microsoft_SQL_Server_(FireDAC)

Espero que ayude a alguien más ...

saludos, Lutz

Lutz
fuente
0

En azure data studio, presione "cmd + shift + p" y escriba "intellisense", luego verá una opción para actualizar el caché intellisense.

Eh, tú
fuente
0

No olvides crear tus migraciones después de escribir los modelos

mgPePe
fuente