web-dev-qa-db-de.com

ungelöster Verweis auf Objekt [INFORMATION_SCHEMA]. [TABLES]

Ich habe eine UDF erstellt, die auf die Ansicht [INFORMATION_SCHEMA].[TABLES] Zugreift:

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

In Visual Studio sind das Schema und der Name für die Ansicht mit einer Warnung gekennzeichnet:

SQL71502: Funktion: [dbo]. [CountTables] hat einen ungelösten Verweis auf Objekt [INFORMATION_SCHEMA]. [TABLES].

Ich kann das Datenbankprojekt weiterhin problemlos veröffentlichen, und die UDF scheint ordnungsgemäß zu funktionieren. IntelliSense füllt den Namen der Ansicht für mich, so dass es kein Problem damit zu haben scheint.

Ich habe auch versucht, die Implementierung so zu ändern, dass sys.objects Anstelle dieser Ansicht verwendet wird, aber ich habe die gleiche Warnung auch für diese Ansicht erhalten.

Wie kann ich diese Warnung beheben?

88
Sam

Fügen Sie einen Datenbankverweis auf master hinzu:

  1. Klicken Sie unter dem Projekt mit der rechten Maustaste auf Verweise.
  2. Wählen Sie Datenbankreferenz hinzufügen ....
  3. Wählen Sie Systemdatenbank.
  4. Stellen Sie sicher, dass Master ausgewählt ist.
  5. Drücken Sie OK .

Beachten Sie, dass die Aktualisierung von VS eine Weile dauern kann.

159
Sam

In unserem Projekt haben wir bereits einen Verweis auf master, aber wir hatten dieses Problem. Hier war der Fehler, den wir bekommen haben:

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

Um den Referenzfehler zu beheben, klicken Sie in der Tabelle sql mit der rechten Maustaste auf Eigenschaften, und überprüfen Sie, ob BuildSettings auf Build festgelegt ist.

Das Ändern des Builds hat das Problem behoben.

3
Russell D

was Sam sagte, ist der beste Weg, dies zu tun.
Wenn Sie jedoch ein Szenario haben, in dem Sie den Dacpac von einem Computer aus bereitstellen müssen, auf dem dieser Verweis nicht vorhanden ist, können Probleme auftreten. Eine andere Möglichkeit besteht darin, die .project-Datei zu öffnen und sicherzustellen, dass das folgende Tag den Wert false für die Build-Konfiguration hat, die Sie ausführen möchten.

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

Auf diese Weise müssen Sie Ihrem Projekt keinen Verweis hinzufügen.

2
tecfield