Das Visual Studio 2010-Bereitstellungsskript erstellt Objekte in falscher Reihenfolge - Auslöser nach gespeicherter Prozedur


7

Ich habe eine Ansicht erstellt, die aus mehreren Tabellen in einer komplexen Abfrage auswählt.

  • Aufgrund der Komplexität habe ich INSTEAD OF-Trigger zum Einfügen / Aktualisieren / Löschen erstellt, um diese Vorgänge in der Ansicht auszuführen.
  • Ich habe auch gespeicherte Prozeduren erstellt, die die Ansicht aktualisieren.

Wenn ich das VS2010-Datenbankprojekt erstelle, enthält das SQL-Skript die CREATE-Befehle in dieser Reihenfolge: (1) die Ansicht, (2) die gespeicherten Prozeduren und dann (3) die Trigger.

Wenn ich jetzt das Bereitstellungsskript ausführe, wird folgende Fehlermeldung angezeigt:

*** SQL01268    D:\scripts\vs2010\Database.sql (28494,0).Net SqlClient Data Provider:
Msg 4405, Level 16, State 1, Procedure MyViewSave, Line 18 View or function 'MyView' is
not updatable because the modification affects multiple base tables

Wenn die Trigger vor der gespeicherten Prozedur erstellt würden, gäbe es kein Problem.

Wie kann ich sicherstellen, dass die Trigger vor den gespeicherten Prozeduren erstellt werden?

Vielen Dank!

Antworten:


5

Möglicherweise ist bei Visual Studio 2010 ein bekanntes Problem aufgetreten:

Dieser sagte, Microsoft empfiehlt Sie die Objektabhängigkeiten Visual Studio erkennen helfen , es scheint in seinem Deployment - Skript zu ignorieren von:

Schema-Qualifizierung der Namen von Objekten, die an abhängigen Beziehungen beteiligt sind.

Wenn sich also alles, was Sie entwickeln, im dboSchema befindet, stellen Sie sicher, dass Sie den Prozess voranstellen und Namen anzeigen, die Ihnen Probleme mit dem Schemanamen geben. Zum Beispiel: dbo.MyViewstatt nur MyView. Visual Studio verfügt im Refactor-Menü über die Funktion "Name vollständig qualifizieren", wenn Sie mit der rechten Maustaste auf ein Objekt klicken, mit dem Sie dies sehr schnell tun können.

Wenn dies nicht hilft, probieren Sie Google aus und sehen Sie sich einige der auf den oben verlinkten Seiten vorgeschlagenen Problemumgehungen an. Lassen Sie uns wissen, was letztendlich für Sie funktioniert hat.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.