Benutzer mit den meisten Antworten
Portieren einer Datenbank Access->SQL-Server Vorgehensweise?

Frage
-
Hallo allerseits,
ich muss für einen Kunden eine MS-Access-Datenbank auf MS SQL-Server portieren. Auf die Datenbank greift eine ASP.NET Webanwendung (C#) zu.
Ich habe mir dazu den Microsoft SQL Server Migration Assistant for Access runtergezogen, um zunächst aus der Access-Datenbank eine SQL-Serverdatenbank zu erzeugen.
Allerdings bin ich mir garnicht sicher, ob ich dabei viel gewonnen habe: Denn ich habe weder Zugriff auf die Access Datenbank noch auf den SQL-Server des Kunden. Ich habe zwar lokal auf meinem Notebook eine Kopie der Acess Datenbank, des C# Webprojektes und auch SQL-Server Express mit Management Studio Express. Doch enthält diese lokale MS Access Kopie sicher nicht die Daten der Noch-Access-Produktiv-Datenbank. Und auch wenn ich jetzt bei mir lokal eine neue SQL-Server-DB erstellt und die MS Access DB mit dem Migration Assistent portiert habe. Wie sollte ich sie jetzt auf die SQL-Server-DB des Kunden bringen?
Der Kunden jedoch ist auf der SQL-Server DB Admin. Da ich dem Kunden aber möglichst wenig Gefummele mit Assistenten usw. zumuten möchte, wäre eigentlich eine exe ideal, die nach vorlage der Access-DB die SQL-Server-Tabellen erstellt und die Daten alle dort reinkopiert. Beide Connection Strings (zu der Access-DB und zum SQL-Server) könnten in der Web.config sein.
Muss ich da komplett selbst Hand anlegen und eine ADO.NET-Applikation schreiben, die mir das bewerkstelligt oder kann ich da den Migration Wizard verwenden? Oder gibt es im SQL-Server fertige Skripte, mit denen sowas geht?
Was würdet ihr mir empfehlen?
Gruss
Johannes
Antworten
-
Hallo Johannes,
Es gibt eine Konsolenversion von SSMA für Access, die mit Skriptdateien arbeiten kann. Das eröffnet für dich die Möglichkeit, Konfigurationsdaten und Parameter dynamisch einzugeben. Obwohl man das Ganze über Process.Start() bzw. über Manipulation der Skriptdateien aus C# machen könnte, ist das vielleicht eher eine Fragestellung für das SQL Server-Forum wo es sicherlich Leute gibt, die viel Erfahrung im Umgang mit dem Tool haben.
Working with SSMA for Access Console:
http://msdn.microsoft.com/en-us/library/hh313087.aspxGruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 6. März 2012 13:43
Alle Antworten
-
Hallo Johannes,
Es gibt eine Konsolenversion von SSMA für Access, die mit Skriptdateien arbeiten kann. Das eröffnet für dich die Möglichkeit, Konfigurationsdaten und Parameter dynamisch einzugeben. Obwohl man das Ganze über Process.Start() bzw. über Manipulation der Skriptdateien aus C# machen könnte, ist das vielleicht eher eine Fragestellung für das SQL Server-Forum wo es sicherlich Leute gibt, die viel Erfahrung im Umgang mit dem Tool haben.
Working with SSMA for Access Console:
http://msdn.microsoft.com/en-us/library/hh313087.aspxGruß
Marcel- Als Antwort markiert Robert BreitenhoferModerator Dienstag, 6. März 2012 13:43
-
Hallo Marcel,
vielen Dank für deine Tipps und Links. Ich habe inzwischen schon angefangen, selbst den Code zu schreiben, damit der Kunde die exe nur ausführen muss. Es ist nämlich auch so, dass der SSMA bei zwei Tabellen nicht getan hat, warum weiß ich nicht. Außerdem hat er zwar Primärschlüssel angelegt, aber dort nicht den Auto-Inkrement gesetzt (die Identity). Den Teil, der die Tabellen und Spalten erstellt habe ich schon. Das mühsamste war quasi, die Schemen der Tabellen händisch in meinen Code zu übertragen und natürlich vorher rauszufinden, wie die SQL-Strings denn so aussehen (da findest du im Internet tausend Anworten, und eine tut halt zufällig auch für SQL-Server). Jetzt muss ich noch den Teil schreiben, der die Daten füllt. Das mache ich wohl am besten über 2 getypte DataSets, ist vermutlich auch "nur" Schreibarbeit. Beide Teile sollen natürlich auch "defensiv" sein, also immer schauen, ob schon was besteht (Tabelle, Spalte, Zeile) und nur die neuen Sachen schreiben. Zum "Glück" habe ich keine Relationen zwischen den Tabellen, sonst müsste ich mich damit auch noch rumärgern.
Den "SQL-Jungs" stelle ich vermutlich auch noch die Fragen von wegen SSMA für Access. Aber da müsste ich vermutlich mir noch ziemlich viel Datenbank-Gesocks aneignen. Wenn ich dich richtig verstanden habe, schriebst du auch eher, dass ich vermutlich von c# aus ein Skript für SSMA erzeugen könnte. Ich sehe es jetzt aber eher umgekehrt: Es wäre nicht schlecht, wenn ich aus der vom SSMA erzeugten Konvertierung eine c#-Konvertierungsklasse erzeugen könnte, zumindest für mich als Ausgangsbasis. Denn ich will ja wie gesagt nicht unbedingt, dass der Kunde SSMA benutzen muss.
Gruss
Johannes