Extreme Veteran
Beiträge: 572
| Hallo,
SoftHAK - 07.01.14 12:01
Habe eine Access Lösung, die aus allen Nähten platz. Ist Stand: 1 FE, 3 Access Datenbanken wegen Größenbegrenzung . Insgesamt rund 5 GByte Daten.
Bislang ziehe ich die Tabellen samt Daten monatlich per VBA über einen ODBC Treiber aus einer DB2 Datenbank und schreibe diese direkt in eine der drei Access Datenbanken.
Ich nutze vorher ein .delete und dann ein DoCmd.TransferDatabase um auch eventuelle neue Datenfelder der Quelle mit zu bekommen.
Wie kann ich nun diese Schritte, also den .delete und den DoCmd.TransferDatabase Schritt auf einen SQL Server am sinnvollsten umbiegen?
Mein aktuelles Know how würde ein Zwischenspeichern in Access als einzige Lösung sehen, aber das kanns ja nicht sein.
Direkte Kommunikation der SQL-Server (also DB2 <--> MS-SQL) ist wahrscheinlich nicht möglich, da der DB2 ODBC Treiber nicht auf dem Server installiert ist.
Wie man vom SQL Server auf DB2 z. B. per OpenDataSource zugreifen kann, ist hier erklärt: http://msdn.microsoft.com/en-us/library/gg165781.aspx
Du kannst also am SQL Server eine SP schreiben, die die Daten rüberholt. Beispiel mit Connectionstring aus obigem Link:
TRUNCATE TABLE AREAS
INSERT INTO AREAS ( Feld1, Feld2, ...)
SELECT Feld1, Feld2, ...
FROM OpenDataSource('DB2OLEDB','Provider=DB2OLEDB;User ID=PLARSEN;Password=PLARSEN;Initial Catalog=DSN1D037;Network Transport Library=TCP;Host CCSID=37;PC Code Page=1252;Network Address=sys1;Network Port=446;Package Collection=MSPKG;Default Schema=NWIND;Process Binary as Character=False;Units of Work=RUW;Default Qualifier=NWIND;DBMS Platform=DB2/MVS;Defer Prepare=False;Persist Security Info=True;Connection Pooling=False;Derive Parameters=False'
).[DSN1D037].[NWIND].[AREAS]
----- Gruss - Peter |