![]() |
AW: INSERT INTO SELECT ohne Spaltenliste
Man kann in TSQL ganz einfach VON einem entfernten Server Daten holen, ohne einen Verbindungsserver einzurichten: Statt dem Tabellennamen nimmst du "OPENROWSET", also z.B.
Code:
Das Kommando führst Du auf dem Server aus, auf dem sich die Zieltabelle befindet.
Insert into MyLocalTargetTable
Select * From OPENROWSET ( 'SQLNCLI', 'Server=MyRemoteSourceServer;Trusted_Connection=yes;...', 'SELECT * from MYRemoteSourceTable' ) Wenn in der Zieltabelle IDENTITY-Spalten enthalten sind, dann musst Du die Feldliste (ohne die die IDENTITY-Spalten) noch hinzupacken, ansonsten bekommst Du eine Exception, und ich glaube, das ist das eigentliche Problem. Denn das der Befehl "INSERT INTO Target SELECT * FROM Source" funktioniert schon, nur eben nicht, wenn IDENITY-Spalten vorhanden sind. Alternativ könnte man noch mit DTS arbeiten, aber das ist ein wenig kompliziert. |
AW: INSERT INTO SELECT ohne Spaltenliste
Hallo zusammen,
nachfolgend ein kleiner Quellcode zum Kopieren von Daten
Delphi-Quellcode:
Function TForm1.DirektCopy(Source,Target:TADOTable):Boolean;
Var i,j:Integer; cfname:String; Begin // Result := False; Try j := Source.FieldCount-1; Source.First; While not Source.Eof do Begin Target.Insert; For i := 0 to j do Begin cfname:=Source.Fields[i].FieldName; if uppercase(cfname) <> 'PINDEX' then if uppercase(cfname) <> 'ROWGUIIG' then if Target.FindField(cfname) <> nil then begin if (Target.FieldByName(cfname).FieldType <> TGUIField) and (Target.FieldByName(cfname).FieldType <> TAutoIncField) then if Source.FieldByName(cfname).AsVariant >'' then Target.FieldByName(cfname).AsVariant := Source.FieldByName(cfname).AsVariant; end; end; Target.post; Source.Next; end; Result := True; except Showmessage('Fehler bei der Umsetzung der Datenbank '); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 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-2025 by Thomas Breitkreuz