DataTable mit IDs in Datenbank schreiben

  • VB.NET

    DataTable mit IDs in Datenbank schreiben

    Guten Morgen,

    ich möchte über VB.net eine Datenbank (MySQL) in einen anderen Server (MSSQL) importieren.
    Die Tabellen hierzu sind im Zielserver bereits vorhanden, Strukturen sind identisch.
    Beim Import sollen die IDs aus der Quelldatenbank übernommen werden.

    Die Daten hole ich mir so ...

    VB.NET-Quellcode

    1. Dim DataAdapter As New SqlDataAdapter("SELECT * FROM tbl_Events", New MySqlConnection(ConnectString_MySQL)
    2. With DataAdapter
    3. .MissingSchemaAction = MissingSchemaAction.AddWithKey
    4. .Fill(DT_Data)
    5. .Dispose()
    6. End With


    Anschließend kommt eine Schleife, welche über alle Zeilen ein SetAddet setzt.

    Zum Import ...

    Zuerst wird der IDENTITY_INSERT im Zielserver auf On gesetzt

    VB.NET-Quellcode

    1. Dim Command as new SqlCommand("SET IDENTITY_INSERT tbl_Events ON", New SqlConnection(ConnectString_MSSQL)
    2. Command.ExecuteNonQuery()


    Dann soll über den DataAdapter die DT_Data in den SQL Server geschrieben werden ...

    VB.NET-Quellcode

    1. Dim DataAdapter As New SqlDataAdapter()
    2. Dim Builder As New SqlCommandBuilder(DataAdapter)
    3. With DataAdapter
    4. .SelectCommand = New SqlCommand("SELECT * FROM tbl_Events", New SqlConnection(ConnectString_MSSQL))
    5. .MissingSchemaAction = MissingSchemaAction.AddWithKey
    6. .Update(DT_Data)
    7. End With


    Und zum Schluss wird der IDENTITY_INSERT wieder auf Off gesetzt

    VB.NET-Quellcode

    1. Dim Command as new SqlCommand("SET IDENTITY_INSERT tbl_Events OFF", New SqlConnection(ConnectString_MSSQL)
    2. Command.ExecuteNonQuery()


    Nun kommt allerdings eine Fehlermeldung ...
    Ein expliziter Wert muss für die Identitätsspalte in der tbl_Events-Tabelle angegeben werden, wenn IDENTITY_INSERT auf ON festgelegt ist oder wenn eine ...

    Sagt mir eigentlich, dass in der DT_Data keine ID Spalte oder keine Daten in der ID Spalte enthalten sind. Dem ist aber nicht so, die ID Werte sind in der DataTable vorhanden.

    Habt ihr eine Idee, wo mein Fehler gerade sitzt?
    Einzelne Zeilen bekomme ich problemlos über ein INSERT INTO Command in die Tabelle, nicht aber über den DataAdapter mit der DataTable.

    Freundliche Grüße :)