![]() |
AW: Daten von Access nach MSSQL kopieren
@Brinkman
wie sinnvoll min mit einer solchen DB arbeiten kann mußt Du sebst beurteilen, aber Du kannst nach Einbindung des Verbindugsservers per SQL per
Code:
Struktur und Daten übernehmen, freilich ohne AutoID's, Indizes, Trigger und Fremdschlüssel
Select *
into NewTable1 from Verbindungsserver...Tabelle1 da ist dann wieder "Handarbeit" per SQL nötig |
AW: Daten von Access nach MSSQL kopieren
Was verstehst Du unter
Zitat:
Ein Problem hättest Du wenn es in der einen Version nur ein Namensfeld und in einer anderen Familienname und Vorname gäbe. Könntest Du vllt. näher beschreiben welcher Art Dein Problem ist? Gruß K-H Wenn auf den Kundenrechnern kein Access installiert ist, könte ![]() |
AW: Daten von Access nach MSSQL kopieren
Hallo zusammen,
zuerst einmal vielen Dank für die Antworten! @Bummi: Ich muss / will mit Autowerten etc. alles übernehmen. @p80286: Es kommen laufend neue Kundenanforderungen dazu. Um bei Ihrem Beispiel zu bleiben, es gibt nicht nur eine Adresse, sondern der eine möchte cuch einen Skype-Eintrag und der andere einen Facbook-Link. Daher kommt bei vielen Anpassungen für Kunden eine Spalte oder aber auch eine Tabelle dazu. Da es das Programm identisch für SQL und Access gibt, kann theoretisch zu jeder Zeit auch umgeschaltet werden. Manuell habe ich das inzwischen bei einigen Kunden gemacht und läuft auch. Allerdings möchte ich da nicht an spezielle Versionen der Datenstruktur gebunden sein, da die Kunden vermutlich nicht unbedingt ein Update bekommen möchten oder sollen. Aus diesem Grund würde ich gerne die Daten und Strukturen unabhängig von der Datenstruktur übertragen können. @generic: ich habe mir soeben mal SSMA for Access 5.2 angeschaut. Alles momentan ganz prima, aber er meckert nicht an, dass die Access verschlüsselt ist, fragt aber auch nicht nach einem Passwort. Da muss ich mal schauen, wie es da weitergeht. Außerdem wäre es schön, wenn man dieses Tool eventuell sogar als Kommandozeilenprogramm laiufen lassen könnte bzw. eine Konfigurationsdatei übergeben könnte. Geht dies? Beste Grüße Brinkman |
AW: Daten von Access nach MSSQL kopieren
Ein Programm das sich nicht auf dahinterliegende Datenstrukturen verlassen kann ??
Vielleicht solltest Du auf Strukturen wie [Table_link][TableID][Name][Value] für die ständigen Erweiterungen umstellen, also Daten längs statt Quer verwalten. |
AW: Daten von Access nach MSSQL kopieren
Zitat:
Delphi-Quellcode:
// Pseudocode
if not FieldExists('Adressen', 'Skype') then AppendField('Adressen', 'Skype', 'varchar(40)', {Null=}True); if not TableExists('SubContacts') then CreateTable('SubContacts', ['IdSubContact varchar(20) NOT NULL', 'Beschreibung varchar(100)',...]); |
AW: Daten von Access nach MSSQL kopieren
Zitat:
Das Zauberwort heißt ![]() ![]() |
AW: Daten von Access nach MSSQL kopieren
@bummi: natürlich kann sich das Programm auf die Datenstrukturen verlassen. Sind diese nicht aktuell, werden sie angehoben. Sind sie aktueller als das Programm, dann würde es sich um einen Downgrade handeln, der nicht zulässig ist.
@shmia, Sir Rufo: vielen Dank für die Hinweise. Aber die Frage ging in eine andere Richtung. Wenn ich dies so recht sehe, dann gib es so eine Universalmigration wohl nicht und ich muss doch auf ssma zurückgreifen ... Danke trotzdem |
AW: Daten von Access nach MSSQL kopieren
Zitat:
![]() |
AW: Daten von Access nach MSSQL kopieren
Zitat:
Im nächsten Schritt kannst du Tabelle für Tabelle in ihrem Inhalt kopieren. Eine Funktion zu schreiben, die alle Datensätze einer Tabelle in eine strukturgleiche Tabelle in einer anderen DB kopiert ist nicht so schwer.
Delphi-Quellcode:
Beim Kopieren der Tabellen gilt es die Reihenfolge zu beachten, da die Tabellen in einer relationalen Datenbank in bestimmten Abhängigkeiten stehen.
{**************************************************************************
* NAME: CopyDataSetRecord * DESC: Kopiert alle gleichnamigen Felder aus Src nach Dst. * Dst.State muss in [dsEdit,dsInsert] sein, sonst wird ne * Exception geschmissen. * Es findet keinerlei Prüfung auf Datentypen statt! * * Mit TagMask kann das Kopieren von markierten Feldern des Quelldatasets * verhindert werden. *************************************************************************} procedure CopyDataSetRecord(Src,Dst: TDataSet; TagMask:Integer=0); var i: Integer; fSrc,fDst: TField; begin for i := 0 to Src.FieldCount-1 do begin fSrc := Src.Fields[i]; fDst := Dst.FindField(fSrc.FieldName); if Assigned(fDst) and ((fSrc.Tag and TagMask)=0) then begin fDst.Value := fSrc.Value; end; end; end; procedure DeleteAllRecords(ds: TDataSet); begin ds.DisableControls; try ds.First; while not ds.Eof do ds.Delete; finally ds.EnableControls; end; end; procedure CopyDataSet(Src,Dst: TDataSet); begin // zuerst alle Datensätze im Ziel löschen DeleteAllRecords(Dst); Src.First; while not Src.Eof do begin Dst.Append; try CopyDataSetRecord(Src,Dst); Dst.Post; except Dst.Cancel; raise; end; Src.Next; end; end; Man muss zuerst die Mastertabellen (z.B. Kundenstamm) kopieren und erst danach die Detailtabellen (z.B. Bestelldaten, die sich auf den Kundenstamm beziehen). |
AW: Daten von Access nach MSSQL kopieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz