Vor ein paar Wochen musste ich einen Abgleich zwischen zwei SQL-Datenbanktabellen machen. Die Datenbanken lagen jedoch auf zwei unterschiedlichen physikalischen Servern.
Da ich im Netz kein reines SQL-Script dazu finden konnte hier meine Lösung.
Es handelt sich dabei um ein VBScript, welches die Quelltabelle abfragt, das erhaltene Recordset durchläuft und Zeile für Zeile in die Zieltabelle schreibt.
‘Variablendeklaration
Dim objSourceCN, strSourceServer, strSourceDatabase, strSourceUser, strSourcePassword, strSourceTable, strSourceIDColumn, strSourceColumn, strSourceSQL
Dim objTargetCN, strTargetServer, strTargetDatabase, strTargetUser, strTargetPassword, strTargetTable, strTargetIDColumn, strTargetColumn, strTargetSQL
Dim objRS
‘Quelldatenbank
strSourceServer = “QUELLSERVERNAME_ODER_IP”
strSourceDatabase = “NAME_DER_QUELLDATENBANK”
strSourceUser = “BENUTZERNAME_FÜR_QUELLDATENBANK”
strSourcePassword = “PASSWORT_FÜR_QUELLDATENBANK”
strSourceTable = “QUELLTABELLE”
strSourceIDColumn = “QUELL_ID_SPALTE”
strSourceColumn = “QUELLSPALTE”
‘Zieldatenbank
strTargetServer = “ZIELSERVERNAME_ODER_IP“
strTargetDatabase = “NAME_DER_ZIELDATENBANK”
strTargetUser = “BENUTZERNAME_FÜR_ZIELDATENBANK”
strTargetPassword = “PASSWORT_FÜR_ZIELDATENBANK”
strTargetTable = “ZIELTABELLE”
strTargetIDColumn = “ZIEL_ID_SPALTE”
strTargetColumn = “ZIELSPALTE”
‘Quellconnection
Set objSourceCN = CreateObject(“ADODB.Connection”)
objSourceCN.Open “Provider=SQLOLEDB;Data Source=” & strSourceServer & “;” & “Initial Catalog=” & strSourceDatabase & “;” & “User ID=” & strSourceUser & “;Password=” & strSourcePassword & “;”
‘Zielconnection
Set objTargetCN = CreateObject(“ADODB.Connection”)
objTargetCN.Open “Provider=SQLOLEDB;Data Source=” & strTargetServer & “;” & “Initial Catalog=” & strTargetDatabase & “;” & “User ID=” & strTargetUser & “;Password=” & strTargetPassword & “;”
‘SQL-Abfrage zum Abfragen der Quelldatenbank
strSourceSQL = “Select ” & strSourceTable & “.” & strSourceIDColumn & “, ” & strSourceTable & “.” & strSourceColumn & “ From ” & strSourceTable
‘SQL Abfrage zur Quelldatenbank ausführen
Set objRS = objSourceCN.Execute(strSourceSQL)
‘Gehe das RecordSet
Do Until objRS.EOF
‘SQL-Abfrage zum Ändern der Zieldatenbank
strTargetSQL = “UPDATE ” & strTargetTable & ” SET ” & strTargetColumn & “ = ‘” & objRS(strTargetColumn) & “‘ WHERE ” & strTargetIDColumn & “ = ‘” & objRS(strTargetIDColumn) & “‘”
‘Hilfsausgabe
WScript.Echo strTargetSQL
‘Ausführung SQL-Abfrage zum Ändern der Zieldatenbank
objTargetCN.Execute strTargetSQL
‘Leeren der SQL-Abfrage zum Ändern der Zieldatenbank
strTargetSQL = “”
‘Gehe ein Recordset Wert weiter
objRS.MoveNext
Loop
‘Schieße Verbindung zur Zieldatenbank
objTargetCN.Close
‘Schließe Recordset
objRS.Close
‘Schließe Verbindung zur Quelldatenbank
objSourceCN.Close


5. Mai 2011
keine Kommentare