C# 连接到客户端计算机上的数据库时发生异常

C# 连接到客户端计算机上的数据库时发生异常,c#,sql-server,entity-framework,deployment,localdb,C#,Sql Server,Entity Framework,Deployment,Localdb,我创建了一个WPF应用程序,它使用实体框架和SQL server 2012作为数据库。它在我的机器上运行良好。但当我在客户机上运行这个时,我收到了异常。当我试图在数据库中添加记录时会发生这种情况 异常:基础提供程序在打开时失败 内部异常:建立到SQL Server的连接时发生与网络相关或特定实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口 连接字符串: <connectionStrings>&l

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

异常:基础提供程序在打开时失败 内部异常:建立到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)

A.创建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
编辑::(仅在这一行上方阅读,以获得一般理解……请参阅下面我实际执行的步骤)

好的,上面的内容有点混乱,因为很难知道您是在处理~实例还是数据库

让我们试试这个:

SqlLocalDB.exe create "MySuperCoolLocalExpressInstance"
SqlLocalDB.exe share "MySuperCoolLocalExpressInstance" "MySuperCoolLocalExpressInstanceSHARED"
SqlLocalDB.exe start "MySuperCoolLocalExpressInstance"
SqlLocalDB.exe info "MySuperCoolLocalExpressInstance"
现在,非常重要的是,获取非常独特的“命名管道”值

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

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

您的客户端计算机上是否安装了SQL Server?是的,我已在客户端计算机上安装了SQLLocalDB,我是否需要将mdf文件复制到客户端?或者客户端需要自己创建mdf文件?好的……现在我同意您的看法,这不是小事。我可以通过management studio连接到我的“实例”,但如果我尝试添加数据库(通过SSMS),它坏了。我要玩一下。如果你找到答案,请发帖。
np:\\.\pipe\LocalDB#<use your pipe name>\tsql\query
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>
enter code here