お世話になっております。
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();
ツイート | ![]() |