我创建了一个WPF应用程序,它使用实体框架和SQL Server 2012作为数据库。它在我的机器上运行良好。但是当我在客户端机器上运行它时,我收到了异常。当我尝试在数据库中添加记录时会发生这种情况。
异常:底层提供程序在Open上失败 内部异常:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:SQL网络接口,........
连接字符串:
<connectionStrings><add name="SchoolModelContext"
connectionString="metadata=res://*/SchoolModel.csdl|res://*/SchoolModel.ssdl|res://*/SchoolModel.msl;
provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;
initial catalog="SCHOOLDB.MDF"
integrated security=True;MultipleActiveResultSets=True;
App=EntityFramework'" providerName="System.Data.EntityClient" />
</connectionStrings>
答案 0 :(得分:0)
错误消息...它提供有时是兔子痕迹的提示。基本上错误是说“我无法连接到SQL Server,出现了问题”。
但是..你说你在客户端“安装了SqlLocalDB”。
您是否“连接”了新数据库(SCHOOLDB)?
http://msdn.microsoft.com/en-us/library/hh212961.aspx
一个。创建LocalDB实例
以下示例使用SQL Server 2012二进制文件创建名为SCHOOLDB的SQL Server Express LocalDB实例并启动实例。
SqlLocalDB.exe create "SCHOOLDB" 11.0 -s
阿卡,你做过类似的事吗?
(MSDN文章中可能与此问题无关的其他信息)
B中。使用LocalDB的共享实例
使用管理员权限打开命令提示符。
SqlLocalDB.exe create "SCHOOLDB"
SqlLocalDB.exe share "SCHOOLDB" "SchoolSharedLocalDB"
SqlLocalDB.exe start "SCHOOLDB"
SqlLocalDB.exe info "SCHOOLDB"
REM The previous statement outputs the Instance pipe name for the next step
sqlcmd –S np:\\.\pipe\SCHOOLDB#<use your pipe name>\tsql\query
CREATE LOGIN NewLogin WITH PASSWORD = 'Passw0rd!!@52';
GO
CREATE USER NewLogin;
GO
EXIT
使用NewLogin登录执行以下代码以连接到LocalDB的共享实例。
sqlcmd –S (localdb)\.\SchoolSharedLocalDB -U NewLogin -P Passw0rd!!@52
编辑:::(只有阅读以上这一行才能获得一般性理解......请参阅下面我实际执行的步骤)
好的,上面的内容有点令人困惑,因为很难知道你是在处理〜实例还是数据库。
我们试试这个:
SqlLocalDB.exe create "MySuperCoolLocalExpressInstance"
SqlLocalDB.exe share "MySuperCoolLocalExpressInstance" "MySuperCoolLocalExpressInstanceSHARED"
SqlLocalDB.exe start "MySuperCoolLocalExpressInstance"
SqlLocalDB.exe info "MySuperCoolLocalExpressInstance"
现在,非常重要的是,获得您非常独特的“命名管道”值。
np:\\.\pipe\LocalDB#<use your pipe name>\tsql\query
将您的SchoolDB.mdf和SchoolDB.ldf复制到:
c:\MyCoolLocalDatabaseFiles\
现在将连接字符串设置为:
<connectionStrings>
<add name="SchoolModelContext"
connectionString="metadata=res://*/SchoolModel.csdl|res://*/SchoolModel.ssdl|res://*/SchoolModel.msl;
provider=System.Data.SqlClient;provider connection string="data source=np:\\.\pipe\LOCALDB#MYUNIQUEPIPENAME\tsql\query;attachdbfilename=C:\MyCoolLocalDatabaseFiles\SchoolDB.mdf;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
但用“MYUNIQUEPIPENAME”代替你的价值。
密钥是“attachdbfilename”。这是如何“在运行中”附加数据库。
您有一些替代方法可以使用命名管道语法。参见:
http://www.connectionstrings.com/sql-server-2012
“本地SQL Server Express上的用户实例”
enter code here