2016-08-10 1 views
0

verpasst hat In meiner SQL Server-Datenbank habe ich eine vorhandene Tabelle sagen tblA. Jetzt muss ich eine neue Spalte zu dieser Tabelle mit dem Namen 'IsActive' hinzufügen. Es gibt viele andere Tabellen (zB tblB) mit dem Spaltennamen 'IsActive', die bereits in der Datenbank existieren.SQL Server - Suchen, ob eine Spalte Alias ​​in einer gespeicherten Prozedur in einer Datenbank

Jetzt nachdem die Säule Zugabe kam ich auf eine vorhandene gespeicherte Prozedur, die den folgenden Code

TBLA a INNER JOIN TBLB b ON a.id = b.id WHERE IsActive = 1

hat Da in der WHERE-Bedingung kein Alias ​​für die Spalte angegeben ist, gibt dieser SP den Fehler 'Mehrdeutiger Spaltenname' IsActive '' aus.

Es gibt Tausende von SPs in der DB, in denen die tblA verwendet wird.

Gibt es also einen einfachen Weg/einzelnes Skript zu überprüfen, ob eine Spalte mit dem Namen 'IsActive' in einem SP ohne Alias ​​existiert?

Antwort

0

Vielleicht ist es keine Lösung für Sie.

Aber versuchen Sie diese Abfrage verwenden, um es

SELECT r.ROUTINE_NAME 
    ,OBJECT_DEFINITION (OBJECT_ID(r.ROUTINE_NAME)) 
FROM INFORMATION_SCHEMA.ROUTINES r 
WHERE OBJECT_DEFINITION (OBJECT_ID(r.ROUTINE_NAME)) LIKE '%WHERE IsActive = 1%' 
+0

Das ist eine feine Lösung, aber ich würde entfernen Sie die WHERE und = 1 Teile können helfen ist - verwenden Sie einfach '% IsActive%' –

Verwandte Themen