webentwicklung-frage-antwort-db.com.de

Wie behebe ich mit SSDT SQL71561-Fehler, wenn ich eine Ansicht habe, die auf Objekte in einer anderen Datenbank verweist?

Ich habe ein Datenbankprojekt in SSDT und wenn ich eine Ansicht importiere, die auf Objekte in einer anderen Datenbank verweist, erhalte ich den Fehler SQL71561 mit einer Beschreibung in dieser Richtung:

Fehler 4 SQL71561: Ansicht: [Schema]. [Ansichtsname] hat einen ungelösten Verweis auf Objekt [andere_DB]. [Schema]. [Tabelle]. [Spalte]

Ich habe einige Zeit damit verbracht, dies herauszufinden. Um anderen dabei zu helfen, werde ich die Antwort veröffentlichen, die für mich funktioniert hat.

21
Jeff Ogata

Um dies zu beheben, fügte ich einen Verweis auf die andere Datenbank hinzu und löschte das Feld "Datenbankvariable" im Dialogfeld. Wenn ich dieses Feld nicht gelöscht habe, würde SSDT beim Aktualisieren des Schemas das Aktualisierungsskript mit dem Namen der Datenbankvariablen generieren. Dies würde fehlschlagen.

  1. Fügen Sie Database Reference zum Projekt hinzu.
  2. In meinem Fall war die andere Datenbank ein anderes Projekt in derselben Lösung. Daher konnte ich sie im ersten Dropdown-Menü des Dialogfelds "Datenbankverweis hinzufügen" auswählen.
  3. Stellen Sie sicher, dass der Text im Feld "Datenbankname" korrekt ist.
  4. Löschen Sie das Feld "Datenbankvariable".

Sehen Sie sich den Text "Beispielnutzung" an und vergewissern Sie sich, dass er wie erwartet aussieht. Klicken Sie auf "OK", um die Referenz hinzuzufügen. Dies sollte die "nicht aufgelösten Referenz" -Fehler berücksichtigen.

Nachdem ich dies getan hatte, konnte ich einen Schemavergleich durchführen, der Versuch, das Projekt zu erstellen, führte jedoch zu dem folgenden Fehler:

Fehler 408 SQL00208: Ungültiger Objektname 'db.schema.table'.

Durch das Wechseln zu den Projekteigenschaften und Deaktivieren der Option "Erweiterte Transact-SQL-Überprüfung für allgemeine Objekte aktivieren" konnte das Projekt erfolgreich erstellt werden.

27
Jeff Ogata

Mein Problem war aus Sicht. In der Ansicht hatte ich ...

...FROM [MyDatabase].[dbo].[MyTable]

Ich ersetzte es mit ...

...FROM [MyTable]

Der Grund ist, dass Sie möglicherweise das bacpac/dacpac in einen anderen Datenbanknamen importieren, sodass der Verweis auf [MyDatabase] möglicherweise nicht gültig ist.

9
Jason Geiger

Diese Fehler wurden für mich angezeigt, als ich die Projekteigenschaften> Zielplattform von SQL Server 2016 zu SQL Server 2014 geändert habe.

In meinem Szenario habe ich eine Datenbank, die von einem externen Tool in einem SSDT-Projekt (A) und meinen SQL-Ansichten usw. in einem anderen Projekt (B) mit einer Referenz von B-> A erstellt wird.

Nach der Entwicklung gegen SQL 2016 habe ich herausgefunden, dass unsere Testumgebung 2014 lief. Daher wurde die Zielplattform in (B) so geändert, dass ich sie bereitstellen konnte. (A) ist nicht implementiert - das externe Tool ist ebenfalls installiert und konfiguriert, um dieselbe Datenbank zu erstellen.

Seltsamerweise war ich später in der Lage, Ansichten in (B) zu ändern und zu veröffentlichen, wollte dann aber eine Spalte entfernen. Zu diesem Zeitpunkt schlug die Veröffentlichung aufgrund dieser Referenzfehler weiterhin fehl. Wenn Sie die Zielplattform für Projekt (A) in 2014 ändern, wurde der Fehler behoben und ich konnte fortfahren.

0
robaker

Sie können dies ausführen, wenn Ihre Build-Reihenfolge falsch ist. 

Ich bin darauf gestoßen, als ich eine neue Kopie eines Projekts aus der Quellcodeverwaltung zog und "Lösung bauen" machte. 

Wenn eine Referenz nicht funktioniert, stellen Sie sicher, dass Sie die referenzierte Datenbank [other_db] erstellen. Nachdem ich die [other_db] erstellt hatte, funktionierten meine Referenzen.

0
fhilton