簡體   English   中英

MSDTC事務超時問題

[英]MSDTC transaction timeout issue

我現在面臨MSDTC事務超時問題。 由於歷史原因,我們仍然有許多遺留代碼通過C ++ ODBC運行數據庫操作,默認情況下連接會升級到MSDTC。 問題是當我嘗試執行一個耗時超過1分鍾的冗長操作時,事務將由MSDTC自動處理,我發現可以通過組件服務管理工具更改此值,但是我可以通過編程方式設置此超時值?

任何參考將不勝感激,提前感謝。

我的名字是Tony,我在Microsoft支持部門與分布式事務團隊合作。 我已經閱讀了你的帖子,並相信我理解你所要求的。 這是我編寫的代碼示例,用於在組件級別進行更改。 我希望這可以幫助你:

//Connect to the machine
COMAdmin.COMAdminCatalog m_objAdmin1 = new COMAdmin.COMAdminCatalog();
m_objAdmin1.Connect(System.Environment.MachineName.ToString());

//Get a list of COM+ Applications
COMAdmin.COMAdminCatalogCollection objApplications = (COMAdmin.COMAdminCatalogCollection)m_objAdmin1.GetCollection("Applications");
objApplications.Populate();
COMAdmin.COMAdminCatalogObject appToFind = null;

//Find the application you want to change
for (int i = 0; i < objApplications.Count; i++)
{
    appToFind = (COMAdmin.COMAdminCatalogObject)objApplications.get_Item(i);

    if (appToFind.Name.ToString() == "MSTEST")
    {
        break;
    }
}


 //Now find the component in the application you wish to change
COMAdmin.COMAdminCatalogCollection objComponents = (COMAdmin.COMAdminCatalogCollection)objApplications.GetCollection("Components", appToFind.Key);
objComponents.Populate();
COMAdmin.COMAdminCatalogObject ComponentsToFind = null;

for (int i = 0; i < objComponents.Count; i++)
{
    ComponentsToFind = (COMAdmin.COMAdminCatalogObject)objComponents.get_Item(i);

    if (ComponentsToFind.Name.ToString() == "tdevere_vb6_com.Tdevere")
    {
        break;
    }
}

//Set the Transaction support option
//Enable the overide option
//Set the new value for the time out option
COMAdmin.COMAdminTransactionOptions temp = (COMAdmin.COMAdminTransactionOptions )ComponentsToFind.get_Value("Transaction");
ComponentsToFind.set_Value("Transaction", COMAdmin.COMAdminTransactionOptions.COMAdminTransactionRequiresNew);
ComponentsToFind.set_Value("ComponentTransactionTimeout", 120);
ComponentsToFind.set_Value("ComponentTransactionTimeoutEnabled", true);

//Make sure to save the changes
objComponents.SaveChanges();
objApplications.SaveChanges();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM