连接到客户端机器上的数据库时出现异常

本文关键字:异常 数据库 客户端 机器 连接 | 更新日期: 2023-09-27 18:01:42

我创建了一个使用实体框架和SQL server 2012作为数据库的WPF应用程序。在我的机器上运行得很好。但是当我在客户端机器上运行时,我收到了一个异常。当我试图在数据库中添加记录时,会发生这种情况。

异常:底层提供程序在打开时失败内部异常:在与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=&quot;SCHOOLDB.MDF&quot;
    integrated security=True;MultipleActiveResultSets=True;
    App=EntityFramework'" providerName="System.Data.EntityClient" />
</connectionStrings>

连接到客户端机器上的数据库时出现异常

错误信息…它给出的暗示有时是兔子留下的痕迹。基本上错误是说"我不能连接到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的共享实例

使用Administrator权限打开命令提示符

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 to:

c:'MyCoolLocalDatabaseFiles'

现在将您的连接字符串设置为:

<connectionStrings>
  <add name="SchoolModelContext"
    connectionString="metadata=res://*/SchoolModel.csdl|res://*/SchoolModel.ssdl|res://*/SchoolModel.msl;
    provider=System.Data.SqlClient;provider connection string=&quot;data source=np:''.'pipe'LOCALDB#MYUNIQUEPIPENAME'tsql'query;attachdbfilename=C:'MyCoolLocalDatabaseFiles'SchoolDB.mdf;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

但是用" myuniqueppename "代替你的值。

关键字是"attachdbfilename"。这就是如何"动态地"附加数据库。

您有一些使用命名管道语法的替代方法。看到:

http://www.connectionstrings.com/sql -服务器- 2012

"User Instance on local SQL Server Express"

enter code here