Laden...

JET-SQL-Statements (Access) nach T-SQL übersetzen

Erstellt von Daniel_3_17 vor 11 Jahren Letzter Beitrag vor 11 Jahren 682 Views
D
Daniel_3_17 Themenstarter:in
100 Beiträge seit 2008
vor 11 Jahren
JET-SQL-Statements (Access) nach T-SQL übersetzen

Hi,

in unserer Software können die Benutzer eigene SQL-Statements (auch mit verschachtelte Bedingungen (IIF)) für Abfrage eingeben und abspeichern.

In der alten Version griff die Software auf eine Access-Datenbank zu, also JET-SQL.
Die neue Version greift auf eine SQL-CE-Datenbank zu, aso T-SQL.

Ich bin gerade dabei ein entsprechendes Migrationstool für die Benutzer zu entwickeln, die auf die neue Version umsteigen. U. A. sollen die vom Benutzer erstellten SQL-Statements nach T-SQL übersetzt werden.

Nun frage ich mich wie ich sowas am elegantesten lösen kann.

Mir kommen Gedanken über zerpflückte Strings über reguläre Ausdrücke oder vielleicht sowas wie einen Baum für die Befehle aufzubauen.

Meine Hoffnung besteht darin, dass einer von euch schon was ähnliches gemacht hat und mir eine Themenrichtung vorgeben kann, damit ich es "richtig" machen kann.

Am besten wäre es natürlich, wenn es eine Komponente bereits fertig gibt. (Wobei mir die Entwicklung schon Spaß machen würde. 😉 )

Ach, zur Info: Es ist übrigens in Ordnung, wenn nicht jedes Statement übersetzt werden kann.

Danke schon mal!

Daniel

P.S.: Eine gute Übersicht darüber was man bei der manuellen Übersetzung beachten muss, gibt es übrigens hier:
Convert Microsoft Access (JET SQL) to SQL Server (T-SQL) Cheatsheet

6.911 Beiträge seit 2009
vor 11 Jahren

Hallo Daniel_3_17,

ein Baum ist das passendere als String-Zerpflücken.
Da das Entity Framework jetzt open source ist, könntest du dort schauen wie mit EntityQuery, Expressions und QueryProvidern umgegangen wird und das für deinen Übersetzen nutzen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"