栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

错误:基础提供程序在打开时失败。怎么解决呢?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

错误:基础提供程序在打开时失败。怎么解决呢?

在第一种情况下,您将嵌套 AnotherDbContext 。将为每个数据库打开与数据库的连接。当您在using块中调用服务方法时,将在
MyDbContext中 打开一个新连接,而另外一个已经打开。这会导致您的事务被提升为分布式事务,并且外部连接无法使用部分提交的数据(服务中
dba.SaveChanges 调用的结果)。 还要 注意,分布式事务的速度要慢得多,因此降低性能的副作用。

private void btnTwoConnectionsNested_Click(object sender, EventArgs e){    string connectionString = @"Data Source=" + tbServer.Text        + @";Initial Catalog=master;Integrated Security=True; timeout=0";    using (TransactionScope transactionScope = new TransactionScope())    {        SqlConnection connectionOne = new SqlConnection(connectionString);        SqlConnection connectionTwo = new SqlConnection(connectionString);        try        { //2 connections, nested connectionOne.Open(); connectionTwo.Open(); // escalates to DTC on 05 and 08 connectionTwo.Close(); connectionOne.Close(); MessageBox.Show("Success");        }        catch (Exception ex)        { MessageBox.Show("ERROR: " + ex.Message);        }        finally        { connectionOne.Dispose(); connectionTwo.Dispose();        }    }}

在一个事务范围内,它将打开两个嵌套的连接。结果:

针对SQL Server 2005实例:服务器楽ERVERNAME上的MSDTC不可用。

针对SQL Server 2008实例:
服务器“ ERVERNAME”上的MSDTC不可用。

对于两个版本的嵌套连接,SQL Server都应该并且应该升级到DTC。

嵌套连接将在SQL Server 2005和2008中升级为DTC。一次打开一个连接将在2005年升级为DTC,但在2008年将不会升级。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/634592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号