DTSパッケージ実行時の終了手順は?


こういち  2005-04-02 01:13:52  No: 56854

お世話になっております。
Visual C++ 6.0からDTSパッケージを実行するプログラムを作成しています。
下記のように処理を行っているのですがタスクマネージャでメモリ使用量を
見ていると処理を実行する度に増えていきます。
解放手順に問題があるのでしょうか?
宜しくお願いいたします。

Connection2         objConnect;
Connections         objConnects;
_Package2           objPackage;
Steps               objSteps;
Step2               objStep;
int                 intCnt;
int                 intStepCnt;
VARIANT             varIndex;

try {
    objPackage.CreateDispatch("DTS.Package2");
    objConnects.AttachDispatch(objPackage.GetConnections());
    objConnect = objConnects.New("SQLOLEDB.1");
    objConnect.SetId(1);
    objConnect.SetDataSource(strDataSrc);
    objConnect.SetPassword(strPass);
    objConnect.SetUserID(strUsrId);
    objConnect.SetUseTrustedConnection(FALSE);
    objConnects.Add(objConnect.DetachDispatch());
    objPackage.LoadFromStorageFile(
            strPkgPath, NULL, NULL, NULL, strPkgName, NULL);
    objPackage.SetFailOnError(FALSE);
    objSteps.AttachDispatch(objPackage.GetSteps());
    memset(&varIndex, 0, sizeof(varIndex));
    intStepCnt = objSteps.GetCount() + 1;
    for(intCnt = 1; intCnt < intStepCnt; intCnt++) {
        varIndex.vt = VT_I4;
        varIndex.lVal = intCnt;
        objStep.AttachDispatch(objSteps.Item(varIndex));
        objStep.SetFailPackageOnError(FALSE);
        objStep.SetExecuteInMainThread(TRUE);
        objStep.Execute();
        objStep.ReleaseDispatch();
    }
} catch(CException *pe) {
    pe->Delete();
}
objConnects.ReleaseDispatch();
objSteps.ReleaseDispatch();
objPackage.UnInitialize();
objPackage.ReleaseDispatch();


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加