Je soupçonne que vous avez deux tables portant le même nom. L'une appartient au schéma "dbo" ( dbo.PerfDiag
), et l'autre appartient au schéma par défaut du compte utilisé pour se connecter à SQL Server (quelque chose comme userid.PerfDiag
).
Lorsque vous avez une référence non qualifiée à un objet de schéma (tel qu'une table) - une référence non qualifiée par le nom du schéma - la référence à l'objet doit être résolue. La résolution du nom s'effectue en recherchant, dans la séquence suivante, un objet du type approprié (table) avec le nom spécifié. Le nom est résolu en fonction de la première correspondance :
- Sous le schéma par défaut de l'utilisateur.
- Sous le schéma "dbo".
La référence non qualifiée est liée à la première correspondance dans la séquence ci-dessus.
En règle générale, il est recommandé de siempre qualifier les références aux objets du schéma, pour des raisons de performance :
-
Une référence non qualifiée peut invalider un plan d'exécution mis en cache pour la procédure stockée ou la requête, étant donné que le schéma auquel la référence était liée peut changer en fonction des informations d'identification exécutant la procédure stockée ou la requête. Il en résulte une recompilation de la requête ou de la procédure stockée, ce qui nuit aux performances. Les recompilations entraînent la levée des verrous de compilation, ce qui empêche d'autres personnes d'accéder à la (aux) ressource(s) nécessaire(s).
-
La résolution de nom ralentit l'exécution de la requête, car il faut effectuer deux recherches pour trouver la version probable de l'objet (celle qui appartient à "dbo"). C'est le cas habituel. La seule fois où une seule sonde permet de résoudre le nom est lorsque l'utilisateur actuel possède un objet du nom et du type spécifiés.
[Modifié pour plus de précision]
Les autres possibilités sont (sans ordre particulier) :
- Vous n'êtes pas connecté à la base de données que vous pensez être.
- Vous n'êtes pas connecté à l'instance du serveur SQL que vous pensez être.
Vérifiez deux fois vos chaînes de connexion et assurez-vous qu'elles spécifient explicitement le nom de l'instance du serveur SQL et le nom de la base de données.