首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSDTC事务超时问题

MSDTC事务超时问题
EN

Stack Overflow用户
提问于 2011-09-27 11:00:46
回答 1查看 4.6K关注 0票数 3

我现在面临着MSDTC事务超时的问题。由于历史原因,我们仍然有许多遗留代码通过MSDTC ODBC运行DB操作,并且默认情况下连接升级到C++。问题是当我尝试执行一个耗时超过1分钟的冗长操作时,事务将由MSDTC自动处理,我发现可以通过组件服务管理工具更改此值,但是我能否以编程方式设置此超时值?

任何参考将不胜感激,提前感谢。

EN

回答 1

Stack Overflow用户

发布于 2011-10-05 01:06:08

我的名字是Tony,我在微软支持部门的分布式事务团队工作。我已经读过你的帖子了,我相信我理解你的要求。下面是我编写的一个代码示例,用于在组件级别进行更改。我希望这对你有帮助:

代码语言:javascript
复制
//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();
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7563743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档