SQL Server 2008 - sp_refreshview Bombenanschlag auf einige Ansichten
Habe ich geerbt, eine ziemlich große Projekt, das macht umfangreiche Verwendung von SQL Server (2005 und 2008) Ansichten.
Einen Schritt in den build-Prozess ist der Aufruf der sp_refreshviews
im system gespeicherten Prozedur, um sicherzustellen, dass keine änderungen auf alle Tabellen gebrochen haben unsere Ansichten. Dies funktioniert sehr gut .... außer für etwa drei oder vier (von 200+) Ansichten....
Mit denen, die es nur Bomben aus - gibt seltsame Fehlermeldungen wie
Msg-15165, Ebene 16, Status 1,
Verfahren
sp_refreshsqlmodule_internal, Linie 55
Objekt konnte nicht gefunden werden
'vYourViewNameHere' oder Sie nicht
Berechtigung haben.
ist absolut falsch - diese Ansicht hat vorhanden ist, und ich auf jeden Fall kann wählen Sie es aus.
Ich kann nicht scheinen zu finden, eine gute übersichtliche Informationen über warum dies geschieht, was es auslöst... irgendwelche Ideen? Gibt es irgendetwas, was ich tun könnte, um zu erkennen, wie problematisch Ansichten? Kann ich das ändern Ihrer definitino, so dass Sie sein würde aktualisierbare wieder?
Update: ich angemeldet einen bug-report auf Microsoft Connect für diesen - wenn Sie dem Zustimmen, scheint seltsam und repariert werden muss, bitte für ihn abstimmen!
- Ist dieser Verbinden-Element relevant für Ihre situation?
- Stefanelli: habe es versucht - Gleiches Ergebnis 🙁 ich ließ eine von jenen, die problem-sichten und neu erstellt, es mit dem expliziten schema - noch nicht wie, aktualisiert zu werden....
- sp_refreshview erfordert die alter-Berechtigung für die Ansicht in Frage. Sie erwähnt, dass Sie auswählen können, aber können Sie ändern Sie die einzelnen anzeigen, mit der gleichen Anmeldung sind Sie sp_refreshview ausgeführt unter?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich in die Kommentare, die Sie erwähnen, es hat SCHEMABINDING. Ich kann fast garantieren, dass ist das Problem. Bücher online ausdrücklich sagt, das ist für den Einsatz auf nicht an ein schema gebunden Ansichten.
Einer Schema-gebunden-Ansicht würde nicht zulassen, dass eine wichtige änderung auftreten, so die Aktualisierung der meta-Daten ist un-nötig. Kann man getrost überspringen.
Können Sie ermitteln alle schemabound Ansichten wie diese:
sp_refreshview
system-sproc zu scheitern, auf solche Ansichten.....WITH SCHEMABINDING
auf die Aktualisierung, da Sie selbst bereits stellen Sie sicher, dass sich nichts geändert hat.... plus die Fehlermeldung ist wirklich ziemlich kryptisch und missverständlich, auch....Lief ich in den gleichen Fehler bei der Verwendung von sp_helptext. In meinem Fall war die Ursache mithilfe von sp_rename um benennen Sie die Ansicht. Der folgende code reproduziert dieses Fehlers.
Die einzige Lösung ist, manuell ändern Sie die Ansicht. Dieses Update anwenden, auf die oben genannte Lösung und Sie bekommen:
Meiner Inkarnation dieser Fehler war:
Diese Fehlermeldung berichtet wurde, sind an verschiedenen stellen in der db-Skript. Ich würde sagen, falschen stellen. Wenn ich die auskommentierten SQL dieser Fehler wurde gemeldet, der gleiche Fehler würde gemeldet werden anderswo.
Kommentierte ich aus dem folgenden Aufruf in meinem script als workaround, und das Skript würde erfolgreich abgeschlossen.
-- EXECUTE sp_refreshview @viewName;
Hinweis: Meine Datenbank nicht melden, dass Sie eine schemabound Ansichten beim ausführen der Abfrage vorgeschlagen, in RThomas' angrenzenden Antwort https://stackoverflow.com/a/6460532/179972
UPDATE - LÖSUNG:
Nachdem unser Datenbank-Skript erfolgreich ausgeführt wurde mit der
sp_refreshview
Befehl auskommentiert (siehe oben), wir liefen dann die Ansicht aktualisieren-code auf seine eigene, und es war auch erfolgreich zu sein.--
Diese Antwort macht keinen Sinn für mich, wie es war in der Lage, erfolgreich zu arbeiten, jedoch habe ich dokumentieren es hier im Fall erweist es sich als hilfreich, um jemand anderes.
Finden, welche Ansicht Ihr problem hinzufügen drucken, um die normale sppRefreshViews. Nichts weltbewegendes hier, aber ich dachte, ich würde teilen.