2014-10-27 51 views
2

我的数据库始终设置为多用户模式,我的连接字符串有选项mars = true,但在检查数据库错误日志后,我经常可以看到此错误消息SQL Server数据库设置多用户模式并返回错误单用户模式

服务器将丢弃连接,这是因为客户端驱动程序发送了多个请求会话处于单用户模式。当客户端发送重置连接的请求时,会话中仍有批处理仍在运行,或者客户端在会话重置连接时发送请求时发生此错误。请联系客户端驱动程序供应商。

我不知道是什么我忘了更改激活多用户模式....我尝试激活多用户模式,因为是一个最好的建议,由其他用户读取一些后后

为什么我的会话处于单用户模式?

有些朋友建议使用mars = false和避免多用户模式

这是一个好主意吗?

连接字符串

<add name="BaseEntities" 

connectionString="metadata=res://*/BaseModel.csdl|res://*/WMSModel.ssdl|res://*/BaseModel.msl;&#xD;&#xA; 
    provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyServer;&#xD;&#xA; Initial Catalog=MyDatabase;Persist Security Info=True;User ID=myuser;Password=mypassword;&#xD;&#xA;   
    MultipleActiveResultSets=True;Application Name=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" /> 

后检查DB用户模式,我得到

SELECT user_access_desc 
FROM sys.databases 
WHERE name = 'MyDatabase' 

回报MULTI_USER

我使用C#,实体框架4.X,SQL Server 2008中

感谢您的关注

+0

Asynchronous Processing = True http://dba.stackexchange.com/questions/66200/how-to-troubleshoot-client-driver-has-sent-multiple-requests-while会话 – mxix 2014-10-27 15:51:53

+2

这些是两个完全分开的东西 - MARS是关于多个活动结果集,例如多个阅读器(来自* single *连接)一次。多用户模式意味着可以对数据库进行多个连接。而且你需要**多用户模式 ​​- 否则你的数据库就没用了! – 2014-10-27 15:59:46

+0

mixm - 我会尝试主动异步处理thx。 marc_s - 你对MARS是对的,是的我的数据库需要多用户模式谢谢你的解释 – tierrarara 2014-10-28 14:44:28

回答

0

几天后错误日志消失。移除该溶液MARS选项

我知道2种方式的设定这一选项: 在SQL管理管理员选择数据库 - >选项 - >在连接字符串中设置火星假

添加MultiActiveResultSet =假

谢谢你们的帮助 我的问题解决了