DTS问题(很少有人做过吧)

randee_luo 2010-06-08 03:23:55
unit Unit1;

interface

uses
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.
...全文
305 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
VShelper 2011-03-17
  • 打赏
  • 举报
回复
我也遇到这个问题,手头上有一个运行正常的模板,我照着模板重新核对一遍代码,问题没解决,然后自己随便改了一处string赋值,就好了。然后再改回去,问题又复现不了,郁闷!!
randee_luo 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tjianliang 的回复:]
这个是DTS包本身报的错误
[/Quote]
那请问:有改的方法吗?
亮剑_ 2010-06-08
  • 打赏
  • 举报
回复
这个是DTS包本身报的错误
randee_luo 2010-06-08
  • 打赏
  • 举报
回复

感动。。 等了一下午,,总算有人来看了
iamduo 2010-06-08
  • 打赏
  • 举报
回复
不会,帮顶吧。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧