DELPHI如何调用SQL的DTS包

解决方案 »

  1.   

    var iPkg:Variant;
    begin
    iPkg:=CreateOleObject('DTS.Package');iPkg.LoadFromSQLServer('10.3.99.18','xxx','xxx',0,'','','','pkgname');
    iPkg.Execute;
    iPkg.Uninitialize;
    iPkg:=Null;
    end;
    //////////////////////////////////////////////
    //////////////////////////////////////////////varoConnection,oPackage,oStep,oTask,oCustomTask:olevariant;begin
    try
      oPackage:=Createoleobject('DTS.Package');
      oPackage.FailOnError := True;
      oConnection:=oPackage.Connections.New('SQLOLEDB');
      oStep :=oPackage.Steps.New;
      oTask := oPackage.Tasks.New('DTSBulkInsertTask');
      oCustomTask := oTask.CustomTask;
      oConnection.Catalog := 'test';
      oConnection.DataSource := 'wgf';
      oConnection.UserID := 'sa_01';
      oConnection.Password := '';
      oConnection.ID := 1;
      oConnection.Reusable := True;
      oConnection.ConnectImmediate := False;
      oConnection.UseTrustedConnection := False;
      oPackage.Connections.Add(oConnection);
      oConnection:=NUll;
      oStep.Name := 'GenericPkgStep';
      oStep.ExecuteInMainThread := True;
      oCustomTask.Name := 'GenericPkgTask';
      oCustomTask.DataFile := 'E:\book1.txt';
      oCustomTask.ConnectionID := 1 ;
      oCustomTask.DestinationTableName := 'wgf..Book1';
      oCustomTask.FieldTerminator :=#9;
      oCustomTask.RowTerminator := #13#10;
      oStep.TaskName := oCustomTask.Name;
      oPackage.Steps.Add(oStep);
      oPackage.Tasks.Add(oTask);
      oPackage.FailOnError := True;
      oPackage.Execute;
    finally
      oConnection:=null;
      oCustomTask:=null;
      oTask:=null;
      oStep:=null;
      oPackage:=null;
    end;
      

  2.   

    请问楼上.如果我在本地写好了DTS包.保存成文件发给客户.那程序怎么调用这个文件呢?以上程序是调用保存在SQL里的DTS包吧.没有实际测试过只是猜测!