Wie identifiziere ich Ansichten mit unterbrochenen Abhängigkeiten in SQL Server?

8

Wir haben eine große Anzahl von Sichten in einer geerbten Datenbank, denen einige Abhängigkeiten fehlen (Tabellen- oder sogar andere Sichten)?

Was ist der beste Weg, um die Sichten zu identifizieren, die keine Abhängigkeiten haben?

    
jarofclay 07.07.2011, 19:49
quelle

5 Antworten

11
%Vor%

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.

    
Adrian Iftode 07.07.2011, 20:19
quelle
2

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.

    
Cade Roux 07.07.2011 21:14
quelle
2

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%     
robyaw 31.03.2016 10:16
quelle
1

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

    
John Hartsock 07.07.2011 19:51
quelle
1

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.

    
ibram 07.07.2011 20:31
quelle

Tags und Links