在SQL Server的企业管理器的“数据转换服务”的“数据导入/数据导出”中可以设置DTS包,在VB中可以调用,不知道在delphi中能否调用?又如何调用?请各位高手指点一二。

解决方案 »

  1.   

    可以调用SQL Server的bcp工具,在delphi中使用执行命令的那个函数,忘记是什么了,shellXXX吧。
      

  2.   

    Delphi 当然可以啊
    很简单的,不过我现在每次执行大批量导入数据的时候程序好像停止响应了,虽然还在执行
    DTS 有Onprogress事件,可惜我还没有尝试出如何在Delphi中使用。Some of my example.
    goPackageOld := CreateOLEObject('dts.package2');
    goPackage := goPackageOld;
    goPackage.Name := STR_FTP_PACKAGE_NAME;
    goPackage.Description := STR_FTP_PACKAGE_DESC;
    goPackage.WriteCompletionStatusToNTEventLog := True;
    goPackage.LogFileName :=  Global.gDTSLogFile;;
    goPackage.FailOnError := False;
    goPackage.PackagePriorityClass := 2; // Middle priority
    goPackage.MaxConcurrentSteps := 4;   // Paralell exe max number
    goPackage.LineageOptions := 0;
    goPackage.UseTransaction := True;
    goPackage.TransactionIsolationLevel := 4096;
    goPackage.AutoCommitTransaction := True;
    goPackage.RepositoryMetadataOptions := 0;
    goPackage.UseOLEDBServiceComponents := True;
    goPackage.LogToSQLServer := False;
    goPackage.LogServerFlags := 256;
    goPackage.FailPackageOnLogFailure := False;
    goPackage.ExplicitGlobalVariables := False;
    goPackage.PackageType := 0;//'----------------------------------------------
    //' create package steps information
    //'----------------------------------------------------------------//'------------- a new step defined below
    oStep := goPackage.Steps.New;
    oStep.Name := STR_FTP_STEP_NAME;
    oStep.Description := STR_FTP_STEP_DESC;
    oStep.ExecutionStatus := 1;
    oStep.TaskName := STR_FTP_TASK_NAME;
    oStep.CommitSuccess := False;
    oStep.RollbackFailure := False;
    oStep____iptLanguage := '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 := NULL;
    oTask := goPackage.Tasks.New('DTSFTPTask');
    oTask.Name := STR_FTP_TASK_NAME;
    oCustomTask1 := oTask.CustomTask;
    oCustomTask1.Name := STR_FTP_TASK_NAME;
    oCustomTask1.Description := STR_FTP_TASK_DESC;
    oCustomTask1.SourceLocation := 0;
    oCustomTask1.SourceSite := Global.FTPRemoteHostIP;
    oCustomTask1.SourceUsername := Global.FTPLogin;
    oCustomTask1.SourcePassword := Global.FTPPassword;
    oCustomTask1.DestSite := Global.FTPLocalDir;
    oCustomTask1.NonOverwritable := 0
    oCustomTask1.NumRetriesOnSource := Global.FTPRetryTimes;
    goPackage.Tasks.Add(oTask);
    //
    goPackage.Execute;
      

  3.   

    用bcp命令也可以实现各类数据与SQL的交换.....不过,二楼的强!学习学习