unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DTS_TLB, OleServer,comobj;type
  TForm1 = class(TForm)
    Package1: TPackage;
    Package21: TPackage2;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    function main:boolean;
    procedure task_1(gopackage:variant);
    procedure ocustom_1(ocustomtask1:variant);
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation
//uses   DTSCustTasks_TLB,DTSPump_TLB;
{$R *.dfm}
function Tform1.main :boolean;
var
  gopackageold:_package;
  gopackage:_package2;
  ostep:step;
  oconnection:connection;
  oprecConstraint:PrecedenceConstraint;
begin
  gopackageold:=package(createoleobject('DTS.package'));
  gopackage:=package2(createoleobject('DTS.package2'));
  gopackage:=package2(gopackageold);
  gopackage.Name:='11';
  gopackage.writecompletionstatustoNTEventLog:=false;
  gopackage.failonerror:=true;
  gopackage.packagepriorityclass:=2;
  gopackage.maxconcurrentsteps:=4;
  gopackage.lineageoptions:=0;
  gopackage.usetransaction:=true;
  gopackage.transactionIsolationLevel:=4096;
  gopackage.autocommittransaction:=true;
  gopackage.repositorymetadataoptions:=0;
  gopackage.useOLEDBServiceComponents:=true;
  gopackage.LogToSQLServer:=false;
  gopackage.LogServerFlags:=0;
  gopackage.FailPackageOnLogFailure:=false;
  gopackage.ExplicitGlobalVariables:=false;
  gopackage.PackageType:=0;  //源数据
  oconnection:=gopackage.Connections.New('SQLOLEDB');
  oconnection.ConnectionProperties.Item('Persist Security Info').Value:=true;
  oconnection.ConnectionProperties.Item('User ID').Value:='sa';
  oconnection.ConnectionProperties.Item('Initial Catalog').Value:='college';
  oconnection.ConnectionProperties.Item('Data Source').Value:='(local)';
  oconnection.ConnectionProperties.Item('Application Name').Value:='DTS 设计器';
  oconnection.Name:='college';
  oconnection.ID:=2;
  oconnection.Reusable:=true;
  oconnection.ConnectImmediate:=false;
  oconnection.DataSource:='(local)';
  oconnection.ConnectionTimeout:=60;
  oconnection.Catalog:='college';
  oconnection.UseTrustedConnection:=false;
  oconnection.UseDSL:=false;
  gopackage.Connections.Add(oconnection);
  oconnection:=nil;  //目的地
  oconnection:=gopackage.Connections.New('SQLOLEDB');
  {oconnection.ConnectionProperties.Item('persist security info').Value:=true;
  oconnection.ConnectionProperties.Item('user id').Value:='sa';
  oconnection.ConnectionProperties.Item('initial catalog').Value:='budget';
  oconnection.ConnectionProperties.Item('data source').Value:='(local)';
  oconnection.ConnectionProperties.Item('application name').Value:='DTS 设计器';}
  oconnection.Name:='budget';
  oconnection.ID:=1;
  oconnection.Reusable:=true;
  oconnection.ConnectImmediate:=false;
  oconnection.DataSource:='(local)';
  oconnection.ConnectionTimeout:=60;
  oconnection.Catalog:='budget';
  oconnection.UseTrustedConnection:=false;
  oconnection.UseDSL:=false;
  gopackage.Connections.Add(oconnection);
  oconnection:=nil;  ostep:=gopackage.Steps.New;
  ostep.Name:='DTSStep_DTSDataPumpTask_1';
  ostep.Description:='字段的转换和合并列';
  ostep.ExecutionStatus:=1;
  ostep.TaskName:='DTSTask_DTSDataPumpTask_1';
  ostep.CommitSuccess:=false;
  ostep.RollbackFailure:=false;
  ostep.ScriptLanguage:='VBScript';
  ostep.AddGlobalVariables:=true;
  ostep.RelativePriority:=3;
  ostep.CloseConnection:=false;
  ostep.ExecuteInMainThread:=false;
  ostep.IsPackageDSORowset:=false;
  ostep.JoinTransactionIfPresent:=false;
  ostep.DisableStep:=false;
  //ostep.FailPackageOnError :=false;
  gopackage.steps.Add(ostep);
  ostep:=nil;
  task_1(gopackage);
  gopackage.Execute;    //这里报错,执行不了包
  gopackage.UnInitialize;
  gopackage:=nil;
  gopackageold:=nil;
  result:=true;
end;procedure Tform1.task_1 (gopackage:variant);
var
  otask,ocustomtask1:variant;
begin
  otask:=gopackage.tasks.new('DTSDataPumpTask');
  ocustomtask1:=otask.customtask;  ocustomtask1.name:='DTSTask_DTSDataPumpTask_1';
  ocustomtask1.description:='字段的转换和合并列';
  ocustomtask1.sourceconnectionID:=2;
  ocustomtask1.sourceobjectname:='[college].[dbo].[cou_info]';
  ocustomtask1.destinationconnectionID:=3;
  ocustomtask1.destinationobjectname:='[budget].[dbo].[cou_info]';
  ocustomtask1.progressrowcount:=1000;
  ocustomtask1.maximumerrorcount:=0;
  ocustomtask1.fetchbuffersize:=1;
  ocustomtask1.usefastload:=true;
  ocustomtask1.insertcommitsize:=0;
  ocustomtask1.exceptionfilecolumndelimiter:='|';
  ocustomtask1.exceptionfilerowdelimiter:=#10#13;
  ocustomtask1.allowIdentityInserts:=false;
  ocustomtask1.firstrow:=0;
  ocustomtask1.lastrow:=0;
  ocustomtask1.fastloadoptions:=2;
  ocustomtask1.exceptionfileoptions:=1;
  ocustomtask1.datapumpoptions:=0;  ocustom_1(ocustomtask1);
  gopackage.tasks.add(otask);
  ocustomtask1:=Unassigned;
  otask:=Unassigned;
end;procedure Tform1.ocustom_1(ocustomtask1:variant);
var
  oTransformation,oTransProps,oColumn:variant;
begin
  oTransformation:=ocustomtask1.transformations.new('DTS.DataPumpTransformCopy');
  oTransformation.name:='22';
  oTransformation.transformflags:=63;
  oTransformation.forcesourceblobsbuffered:=0;
  oTransformation.forceblobsinmemory:=false;
  oTransformation.inMemoryblobsize:=1048576;
  oTransformation.transformPhases:=4;  oColumn:=oTransformation.sourcecolumns.new('cou_no',1);
  oColumn.name:='cou_no';
  oColumn.ordinal:=1;
  oColumn.flags:=24;
  oColumn.size:=0;
  oColumn.DataType:=3;
  oColumn.precision:=0;
  oColumn.numericscale:=0;
  oColumn.nullable:=false;  oTransformation.sourcecolumns.add(oColumn);
  oColumn:=Unassigned;  oColumn:=oTransformation.sourcecolumns.new('cou_name',2);
  oColumn.name:='cou_name';
  oColumn.ordinal:=2;
  oColumn.flags:=24;
  oColumn.size:=0;
  oColumn.DataType:=3;
  oColumn.precision:=0;
  oColumn.numericscale:=0;
  oColumn.nullable:=false;  oTransformation.sourcecolumns.add(oColumn);
  oColumn:=Unassigned;  oColumn:=oTransformation.Destinationcolumns.new('cou_no',1);
  oColumn.name:='cou_no';
  oColumn.ordinal:=1;
  oColumn.flags:=86;
  oColumn.size:=0;
  oColumn.datatype:=3;
  oColumn.precision:=0;
  oColumn.numericscale:=0;
  ocolumn.nullable:=false;  oTransformation.destinationcolumns.add(oColumn);
  ocolumn:=Unassigned;  oColumn:=oTransformation.Destinationcolumns.new('cou_name',2);
  oColumn.name:='cou_name';
  oColumn.ordinal:=2;
  oColumn.flags:=86;
  oColumn.size:=0;
  oColumn.datatype:=3;
  oColumn.precision:=0;
  oColumn.numericscale:=0;
  ocolumn.nullable:=false;  oTransformation.destinationcolumns.add(oColumn);
  ocolumn:=Unassigned;  oTransProps:=oTransformation.TransformServerProperties;
  oTransProps:=Unassigned;  oCustomtask1.Transformations.add(oTransformation);
  oTransformation:=Unassigned;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  main;
end;end.这是报的错: project project1.exe raised exception class EOleException with message'包由于步骤"DTSStep_DTSdataPumpTask_1"失败而失败.'.process stopped.use step or run to continue.