sen*_*ale 213 c# sql-server entity-framework database-connection
我正在使用一个.mdf
连接到database
和entityClient
.现在我想更改连接字符串,以便没有.mdf
文件.
以下connectionString
是否正确?
<connectionStrings>
<!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />-->
<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
因为我总是得到错误:
底层提供程序在Open上失败
Chr*_*yne 208
我有这个错误,并找到了一些解决方案:
查看连接字符串,它看起来有效.我发现这篇博文,这里的问题是他们使用的是集成安全性.如果您在IIS上运行,则IIS用户需要访问该数据库.
如果您正在使用实体框架 与交易,实体框架自动打开和关闭与每个数据库调用的连接.因此,在使用事务时,您尝试通过多个连接传播事务.这提升到MSDTC.
将我的代码更改为以下修复它:
using (DatabaseEntities context = new DatabaseEntities())
{
context.Connection.Open();
// the rest
}
Run Code Online (Sandbox Code Playgroud)
ker*_*rem 38
context.Connection.Open()
没有帮助解决我的问题所以我尝试在DTC配置中启用"允许远程客户端",没有更多的错误.
在Windows 7中,您可以通过运行dcomcnfg,组件服务 - >计算机 - >我的电脑 - >分布式事务处理协调器 - >右键单击本地DTC - >安全性来打开DTC配置.
Maj*_*jid 27
您应该看到innerException以查看抛出错误的内在原因是什么.
在我的情况下,原始错误是:
无法打开物理文件"D:\ Projects2\xCU\xCU\App_Data\xCUData_log.ldf".操作系统错误5:"5(访问被拒绝.)".尝试为文件D:\ Projects2\xCU\xCU\App_Data\xCUData.mdf附加自动命名的数据库失败.存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上.
通过向当前用户提供使用文件属性访问相关文件mdf
和ldf
文件的完全权限来解决此问题.
doo*_*urt 24
我发现问题是我在其中一个变体中的连接字符串中有服务器路径:
SERVER\SQLEXPRESS
SERVER
Run Code Online (Sandbox Code Playgroud)
我真的应该拥有:
.\SQLEXPRESS
Run Code Online (Sandbox Code Playgroud)
出于某种原因,只要找不到SQL实例,我就会收到错误.
Jai*_*arN 15
这只是常见问题.即使我遇到过这个问题.在配置了Windows身份验证的开发计算机上,它完美地运行:
<add name="ShoppingCartAdminEntities" connectionString="metadata=res://*/ShoppingCartAPIModel.csdl|res://*/ShoppingCartAPIModel.ssdl|res://*/ShoppingCartAPIModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\SQlExpress;initial catalog=ShoppingCartAdmin;Integrated Security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
一旦在具有相同配置的IIS中托管,我就会收到此错误:
底层提供程序在Open上失败
解决connectionString
了在配置文件中更改的问题:
<add name="MyEntities" connectionString="metadata=res://*/ShoppingCartAPIModel.csdl|res://*/ShoppingCartAPIModel.ssdl|res://*/ShoppingCartAPIModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MACHINE_Name\SQlExpress;initial catalog=ShoppingCartAdmin;persist security info=True;user id=sa;password=notmyrealpassword;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
其他常见错误可能是:
atc*_*way 10
当您收到此异常时,请确保展开详细信息并查看内部异常详细信息,因为它将提供有关登录失败原因的详细信息.在我的情况下,连接字符串包含一个无权访问我的数据库的用户.
无论您使用集成安全性(登录的Windows用户的上下文)还是单个SQL帐户,请确保用户在您尝试访问的数据库的"安全"下具有适当的访问权限,以防止出现此问题.
我在Windows Server 2003上遇到过与SQL Server Express Edition类似的问题.我只是将网络服务作为用户添加到数据库安全性中.
小智 5
SQL Server Express 服务未设置为自动启动。
1) 转到控制面板 2) 管理工具 3) 服务 4) 通过单击将 SQL Server express 设置为自动启动 5) 右键单击并启动该服务
我希望这会有所帮助。
归档时间: |
|
查看次数: |
546599 次 |
最近记录: |