Update 2017
Die Antwort wurde gemäß @ robyaws Antwort aktualisiert.
Ich habe auch einen Fehler für die berechneten Werte in den Select-Anweisungen behoben. Es scheint, dass SELECT TOP 1 NULL from vwTest
keinen Fehler auslöst, wenn vwTest
eine Spalte enthält, wie zum Beispiel 1/0 as [Col1]
, aber SELECT TOP 1 * from vwTest
, die eine Ausnahme auslöst.
Probieren Sie das
Rufen Sie sp_refreshsqlmodule für alle nicht schemagebundenen gespeicherten Prozeduren auf:
%Vor%Dies funktioniert für alle Ansichten, Funktionen und SPs. Schemabound-Objekte haben keine Probleme und können nicht auf ihnen ausgeführt werden, deshalb werden sie ausgeschlossen.
Beachten Sie, dass es immer noch möglich ist, dass SPs aufgrund fehlender Tabellen fehlschlagen - dies entspricht dem Versuch, die Prozedur zu ändern.
Beachten Sie auch, dass genau wie ALTER erweiterte Eigenschaften von UDFs verloren gehen - ich schreibe diese ab und stelle sie danach wieder her.
Adrian Iftodes Lösung ist gut, schlägt aber fehl, wenn Ansichten vorhanden sind, die nicht mit dem Standardschema verknüpft sind. Das Folgende ist eine überarbeitete Version seiner Lösung, die das Schema berücksichtigt und gleichzeitig Fehlerinformationen für jede fehlerhafte Ansicht bereitstellt (getestet in SQL Server 2012):
%Vor%Wenn Sie SQL Server 2005 oder 2008 verwenden, können Sie das Projekt in Visual Studio 2008 oder 2010 importieren und fehlerhafte Abhängigkeiten vom Visual Studio-Projekt analysieren
Ich würde die Datenbank sichern, sie auf meinem Dev-Rechner wiederherstellen, ein Skript mit allen Ansichten in einem neuen Fenster im Management-Server erstellen, alle Ansichten löschen und versuchen, das Skript auszuführen. Wenn eine Ansicht "beschädigt" ist, wird die Ausführung mit einer Fehlermeldung fehlschlagen, z. Keine vorhandene Tabelle oder Spalte.
Tags und Links sql sql-server