| 

.NET C# Java Javascript Exception

1
Hallo liebe CK-Gemeinde,

heute trete ich mit einem Problem an euch heran, welches mich aktuell gut 2 Wochen beschäftigt:
Datenmigration von Access nach MSSQL.
Das Problem ist weniger die eigentliche Migration, welche mich schon aufgrund fehlender Tabellen und anderer Spaltenbezeichnungen in der Access-Datenbank vor einige Probleme gestellt hat, als das Einhalten/Übernehmen des Beziehungen nach MSSQL.
Das größte Problem hierbei ist: Die Beziehungen existieren nicht in der Access-Datenbank sondern nur in der MSSQL-Datenbank.

Mein aktueller Ansatz ist wie folgt:
DataRow newDrSQL = null;
string sourceColumnName = null;
string targetColumnName = null;
foreach(DataTable dtSQL in dsSQL.Tables)
{
if(dsMDB.Tables.Contains(dtSQL.TableName))
{
foreach(DataRow drMDB in dsMDB.Tables[dtSQL.TableName].Rows)
{
try
{
newDrSQL = dtSQL.NewRow();
foreach(DataColumn dcMDB in dsMDB.Tables[dtSQL.TableName].Columns)
{
sourceColumnName = targetColumnName = dcMDB.ColumnName;
{
if(sourceColumnName == "user")
targetColumnName = "username";
if(sourceColumnName == "index")
{
if(dcMDB.DataType == typeof(string))
targetColumnName = "akt_index";
else if(dcMDB.DataType == typeof(int))
targetColumnName = "IdxID";
}
if(sourceColumnName == "akt")
targetColumnName = "obsolete_akt";
}

newDrSQL[targetColumnName] = drMDB[sourceColumnName];
}
dtSQL.Rows.Add(newDrSQL);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Application.DoEvents();
}
}

//tamSQL ist TableAdapterManager
tamSQL.UpdateAll(dsSQL);

Jetzt knallt er mir bei tamSQL.UpdateAll(dsSQL) einen Fehler um die Ohren:
Die INSERT-Anweisung steht in Konflikt mit der FOREIGN KEY-Einschränkung 'FK_Tabelle1_Tabelle2'. Der Konflikt trat in der 'DB_01'-Datenbank, Tabelle 'dbo.Tabelle2', column 'ID' auf.
Die Anweisung wurde beendet.
Mir ist bewusst, warum es dort knallt (Beziehungen sind kein Neuland für mich)... jedoch bin ich ratlos, wie ich das Problem lösen könnte...

Bin dankbar für jede Hilfestellung,
so far,
Karill Endusa
News:
29.10.2012
Karill Endusa 1,5k 1 9
2 Antworten
2
Microsoft hat für derlei Aufgaben die Integration Services des MS SQL Servers.
Vielleicht solltest Du dich da einarbeiten.
31.10.2012
Dominik.Hilke 131 2
Anhand der MSDN konnte ich in Erfahrung bringen, dass es so scheint, als wäre SSIS wirklich das richtige für mich. Kann mich damit leider erst Anfang nächster Woche, wenn überhaupt, auseinandersetzen... ich merk mir mal deine Antwort als potentiell richtig vor, danke zumindest für diese Information (+1).
Karill Endusa 31.10.2012
1
Ist es richtig, dass du die Access-Daten in eine bestehende MSSQL-Datenbank migrieren musst? Ansonsten würde ich die Daten einfach mit den Import-Tools des MSSQL-Servers importieren.

Eine Möglichkeit, dein Problem zu lösen wäre, die Foreign-Key Beziehungen vor dem Import-Vorgang zu deaktivieren bzw. zu löschen und danach wieder zu aktivieren bzw. erzeugen.

Ansonsten sehe ich nur die Möglichkeit, die Beziehungen zu analysieren und die Tabellen in der richtigen Reihenfolge zu importieren.

Gruß
Klaus
30.10.2012
luedi 2,1k 1 9
Ja, deine Annahme stimmt: Ich muss Daten aus Access-Datenbanken in eine bestehende MSSQL-Datenbank migrieren. Die MSSQL-Datenbank ist auf dem "neuesten Stand", soll heißen sie ist zu allen "Versionen" der Access-Datenbank abwärtskompatibel gehalten von der Struktur her...
Aktuell mach ich das ganze jetzt komplett statisch, also habe für jede Tabelle eine eigene Routine geschrieben und dabei auch Beziehungen beachtet, aber schön ist das nicht...
Karill Endusa 30.10.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH