117 votes

référence non résolue à l'objet [INFORMATION_SCHEMA].[TABLES].

J'ai créé un UDF qui accède à la base de données de l'UDF. [INFORMATION_SCHEMA].[TABLES] vue :

CREATE FUNCTION [dbo].[CountTables]
(
    @name sysname
)
RETURNS INT
AS
BEGIN
    RETURN
    (
        SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name
    );
END

Dans Visual Studio, le schéma et le nom de la vue sont tous deux marqués d'un avertissement :

SQL71502 : Function : [dbo].[CountTables] a une référence non résolue à l'objet [INFORMATION_SCHEMA].[TABLES].

Je peux toujours publier le projet de base de données sans aucun problème, et l'UDF semble fonctionner correctement. IntelliSense remplit le nom de la vue pour moi, donc il ne semble pas avoir de problème avec elle.

J'ai également essayé de modifier l'implémentation pour utiliser sys.objects au lieu de cette vue, mais j'ai reçu le même avertissement pour cette vue également.

Comment puis-je résoudre cet avertissement ?

212voto

Sam Points 3542

Ajouter une référence de base de données à master :

  1. Sous le projet, cliquez droit sur Références .
  2. Sélectionnez Ajouter une référence à la base de données... .
  3. Sélectionnez Base de données du système .
  4. Assurer maître est sélectionné.
  5. Appuyez sur OK .

Notez que la mise à jour de VS peut prendre un certain temps.

5voto

Russell D Points 151

Dans notre projet, nous avons déjà une référence à master, mais nous avons eu ce problème. Voici l'erreur que nous avons obtenue :

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1].

Pour résoudre l'erreur de référence, sur le fichier sql de la table, faites un clic droit sur les propriétés et vérifiez que le paramètre BuildSettings est défini sur Build.

Changer sa construction l'a réparé.

3voto

tecfield Points 56

Ce que Sam a dit est la meilleure façon de faire.
Cependant, si vous avez un scénario dans lequel vous devez déployer le dacpac à partir d'une machine qui n'a pas cette référence dans cet emplacement spécifique, vous pouvez avoir des problèmes. Une autre solution consiste à ouvrir votre fichier .project et à vérifier que la balise suivante a la valeur de false pour la configuration de construction que vous essayez d'exécuter.

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

De cette façon, vous n'avez pas besoin d'ajouter une référence à votre projet.

0voto

J'utilise VS 2019, et même après avoir ajouté la référence de la base de données principale, j'ai toujours ce problème. Résolu cela en changeant la plateforme cible du projet DB comme indiqué dans l'image ci-dessous. J'ai dû supprimer et ajouter à nouveau la base de données principale après ce changement. enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X