我import type library一个dtsserver,生成了DtsServer_和DtsServerStorage90,可是不知道该怎么用?望指点一下,在里面也没找到exec之类的方法。
-----------------------
请不要回复为什么要调用dts的问题,原因有二:
1、相对简单
2、需要程序中触发,手工启动,而不是定时运行。
-----------------------
请不要回复为什么要调用dts的问题,原因有二:
1、相对简单
2、需要程序中触发,手工启动,而不是定时运行。
解决方案 »
- 我遇到的一个很大的难题,200分给解决者,100分给UP者(会另开贴给分)
- 如何逐条检查Table中的各条记录?
- 请哪位帮助我写一个函数?
- 如何将自己指定的一片区域镂空?比如心型?
- delphi6.0 多线程socket,分不够再加
- 我執行select * from employee這個句子沒有問題,可以打開employee 這個表.可是改成這樣就有問題了.select employee_id,employee_name fro
- 如何提高数据的查询速度, 从一个100万条记录中找出一条记录,现在速度太慢了受不了了,而且要频繁的操作
- 只有DCU的控件应该怎么安装啊?????
- 作项目时,建立类模块是以什么为准则?
- form.print 针式打印机偶尔打印出来全黑!求解
- 我在ACTIVEXFORM中SHOWMODAL显示另一个窗口,打开一个窗口没问题,同时打开两个含有该控件并且一起显示SHOWMODAL窗口时,另一个弹出的窗口就有问题,类似于内存泄漏之类的错误
- delphi2009中用dbexpress连oracle时中文显示乱码
procedure oCustomTask2_Trans_S1(oCustomTask2: DataPumpTask2);
var
oTransformationOld: Transformation;
oTransformation: Transformation2;
begin
oTransformationOld := oCustomTask2.Transformations.New('DTS.DataPumpTransformCopy');
oTransformation := oTransformationOld as Transformation2;
oTransformation.Name := 'DirectCopyXform';
oTransformation.TransformFlags := 63;
oTransformation.ForceSourceBlobsBuffered := 0;
oTransformation.ForceBlobsInMemory := False;
oTransformation.InMemoryBlobSize := 1048576;
oTransformation.TransformPhases := 4;
oCustomTask2.Transformations.Add(oTransformation);
oTransformation := nil;
oTransformationOld := nil;
end;
var opackageold: package;
opackage: package2;
dts_conn,dts_conn2:connection;
dts_task:task;
dts_customtask:customtask;
dts_pumptask:datapumptask2;
dts_step:step;
begin
//package1.Execute;
//CoInitialize;
opackageold:=CoPackage.Create;
opackage:=opackageold as package2;
dts_conn:=opackage.Connections.new('Microsoft.Jet.OLEDB.4.0');
dts_conn.ID:=1;
dts_conn.DataSource:='c:\1.mdb';
dts_conn2:=opackage.Connections.New('Microsoft.Jet.OLEDB.4.0');
dts_conn2.ID:=2;
dts_conn2.DataSource:='c:\2.mdb';
opackage.Connections.Add(dts_conn);
opackage.Connections.Add(dts_conn2);
dts_step:=opackage.Steps.New;
dts_task:=opackage.Tasks.New('DTSDataPumpTask');
dts_task.Name:='Copy Data from 1.mdb to 2.mdb Task';
dts_customtask:=dts_task.CustomTask;
dts_pumptask:=dts_customtask as datapumptask2;
dts_pumptask.Name:='Copy Data from 1.mdb to 2.mdb Task';
dts_pumptask.SourceConnectionID:=1;
dts_pumptask.SourceSQLStatement:='select * from table1';
//dts_pumptask.SourceObjectName:='table1';
dts_pumptask.DestinationConnectionID:=2;
dts_pumptask.SourceSQLStatement:='select * from table1';
//dts_pumptask.DestinationObjectName:='table1';
dts_pumptask.ProgressRowCount:=100;
dts_pumptask.ProgressRowCount := 1000;
dts_pumptask.MaximumErrorCount := 0;
dts_pumptask.FetchBufferSize := 1;
dts_pumptask.UseFastLoad := True;
dts_pumptask.InsertCommitSize := 0;
dts_pumptask.ExceptionFileColumnDelimiter := '|';
dts_pumptask.ExceptionFileRowDelimiter := #13#10;
dts_pumptask.AllowIdentityInserts := False;
dts_pumptask.FirstRow := 0;
dts_pumptask.LastRow := 0;
dts_pumptask.FastLoadOptions := 2;
dts_pumptask.ExceptionFileOptions := 1;
dts_pumptask.DataPumpOptions := 0;
dts_step.Name:='LowerCaseStep';
dts_step.TaskName:=dts_pumptask.Name;
dts_step.ExecuteInMainThread:=true;
oCustomTask2_Trans_S1(dts_pumptask);
opackage.Tasks.Add(dts_task);
opackage.Steps.Add(dts_step);
opackage.Execute;
opackage.UnInitialize;
end;
这3个单元就不存在了
Microsoft DTSDataPump Scripting object Library(DTSPump.dll) -> DTSPump_TLB
Microsoft DTS Runtime x (DTS.dll)-> DTS_TLB =>x表示版本号
execdts('testdtsx.dtsx');
------------------------------------------------------------------------------------------------function TForm1.execdts(strdts_name: string): boolean;
var
n: variant;
oconnection: variant;
ostep,otask,ocustomtask,mopackage: variant;
begin
mopackage := createoleobject('dts.package2');
oconnection := mopackage.connections.new('sqloledb');
ostep := mopackage.steps.new;
otask := mopackage.tasks.new('dtsexecutepackagetask');
ocustomtask := otask.customtask;
mopackage.failonerror := true; ocustomtask.packagepassword :='';
ocustomtask.filename := strdts_name;
ocustomtask.name := 'execpkgtask'; ostep.taskname := ocustomtask.name;
ostep.name := 'execpkgstep';
ostep.executeinmainthread := true; mopackage.steps.add(ostep);
mopackage.tasks.add(otask);
try
mopackage.execute;
except
ocustomtask := n;
otask := n;
ostep := n;
mopackage.uninitialize;
execdts := false;
exit;
end;
execdts := true;
ocustomtask := n;
otask := n;
ostep := n;
mopackage.uninitialize;
end;
begin
packagename:='temptransform'; //包名
if databasetable.Text = 'T_FamilyWatchTV' then
packagename:='transform';
str:='dtsrun /S '+sServer+' /U sa /P fhwlcatv /N '+packagename+' '+
' /A "areano":"8"='+copy(workstations.Items.Strings[i],1,6)+#37''+
' /A "database":"8"='+database.Text+' /A "begintime":"8"='+DateToStr(begintime.Date)+''+
' /A "tablename":"8"=['+database.Text+'].[dbo].[FamilyRating] '+
' /A "minsecond":"8"='+minsecond.Text+' /A "maxhour":"8"='+maxhour.Text+'';
str:='exec master.dbo.xp_cmdshell '''+str+' ''';
ShowMessage(str) ;
UnitDataModule.DataModule1.adoquery3.close;
UnitDataModule.DataModule1.adoquery3.SQL.Clear;
UnitDataModule.DataModule1.adoquery3.SQL.Add(str);
UnitDataModule.DataModule1.ADOQuery3.open;
end;我一直用的程序段
ObjPackage, ObjStep, ObjTask, ObjExecPkg: variant;
begin
ObjPackage := CreateOLEObject('DTS.Package2');
ObjPackage.failonerror := true;
ObjStep := ObjPackage.steps.new;
ObjTask := ObjPackage.tasks.new('DTSExecutePackageTask');
ObjExecPkg := ObjTask.customtask; ObjExecPkg.PackagePassword := 'user';
ObjExecPkg.FileName := 'C:\DTS_UE\TestPkg\VarPubsFields.dts';
ObjExecPkg.Name := 'ExecPkgTask'; ObjStep.TaskName := objExecPkg.Name;
ObjStep.Name := 'ExecPkgStep';
ObjStep.ExecuteInMainThread := True; ObjPackage.Steps.Add(ObjStep);
ObjPackage.Tasks.Add(ObjTask);
ObjPackage.Execute; ObjExecPkg := Null;
ObjTask := Null;
ObjStep := Null; ObjPackage.UnInitialize;
end;