Sospecho que tienes dos mesas con el mismo nombre. Uno es propiedad del esquema 'dbo' ( dbo.PerfDiag
) y el otro es propiedad del esquema predeterminado de la cuenta utilizada para conectarse a SQL Server (algo así como userid.PerfDiag
).
Cuando tiene una referencia no calificada a un objeto de esquema (como una tabla), una no calificada por el nombre del esquema, la referencia del objeto debe resolverse. La resolución de nombres se produce al buscar en la siguiente secuencia un objeto del tipo apropiado (tabla) con el nombre especificado. El nombre se resuelve en la primera coincidencia:
- Bajo el esquema predeterminado del usuario.
- Bajo el esquema 'dbo'.
La referencia no calificada está vinculada a la primera coincidencia en la secuencia anterior.
Como práctica general recomendada, siempre se deben calificar las referencias a objetos de esquema, por razones de rendimiento:
Una referencia no calificada puede invalidar un plan de ejecución almacenado en caché para el procedimiento almacenado o la consulta, ya que el esquema al que estaba vinculada la referencia puede cambiar dependiendo de las credenciales que ejecutan el procedimiento almacenado o la consulta. Esto da como resultado la recompilación de la consulta / procedimiento almacenado, un impacto de rendimiento. Las recompilaciones hacen que se eliminen los bloqueos de compilación, lo que impide que otros accedan a los recursos necesarios.
La resolución de nombres ralentiza la ejecución de la consulta ya que se deben realizar dos sondeos para resolver la versión probable del objeto (la propiedad de 'dbo'). Este es el caso habitual. La única vez que una sola sonda resolverá el nombre es si el usuario actual posee un objeto del nombre y tipo especificados.
[Editado para ampliar la nota]
Las otras posibilidades son (sin ningún orden en particular):
- No está conectado a la base de datos que cree que está.
- No está conectado a la instancia de SQL Server que cree que está.
Verifique sus cadenas de conexión y asegúrese de que especifiquen explícitamente el nombre de la instancia de SQL Server y el nombre de la base de datos.