Ich versuche, einige SQL-Abfrage Validierung programmatisch in C# (ohne die tatsächliche Datenbank aufrufen). Im Wesentlichen möchte ich, dass ein Benutzer eine Ansicht, UDF oder SP eingeben und seine Abhängigkeiten sofort validieren kann. Der Benutzer würde diese in ein benutzerdefiniertes Werkzeug zum Definieren von Datenbankobjekten eingeben.Get Abhängigkeiten von SQL-Abfrage
Wenn also ein Benutzer eingegeben:
CREATE VIEW someView AS SELECT name, address FROM users
Ich konnte die Abhängigkeit von „Benutzer“ herausziehen und dann prüfen, gegen meine Datenbank-Objektsammlungen, (zB im Speicher gespeichert sind, Tabellen, Views etc. ..) um sicherzustellen, dass in einem von ihnen Abhängigkeit existiert. Denken Sie daran, dass die tatsächlichen Ansichten/UDFs/SPs, die in meine benutzerdefinierte App eingegeben werden, sehr komplex sind und das Parsen selbst nicht wünschenswert ist.
Ich versuche derzeit, dies mit Microsoft.Data.Schema.ScriptDom.Sql.TSql100Parser zu tun. Dies stellt eine Analysemethode bereit, die eine DOM-Darstellung der Abfrage zurückgibt. Dies ist jedoch ein furchtbar komplexes DOM und ich muss im Wesentlichen einen ganzen Parser dafür schreiben.
Irgendwelche Ideen/Vorschläge? Vielen Dank!
so einfach Sie wollen die Objekte ziehen Wird in der Abfrage verwendet? – IEnumerator