我正在使用SQL Server 2008 Express开展项目。我有一个名为SQLEXPRESS
的实例,我曾经通过这个连接字符串连接到数据库:
<add name="MyConn" connectionString="metadata=res://*/MyDataModel.csdl|res://*/MyDataModel.ssdl|res://*/MyDataModel.msl;provider=System.Data.SqlClient;
provider connection string="data source=PCNAME\SQLEXPRESS;initial catalog=DbName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
此连接字符串由.edmx
文件生成(我正在处理ASP.NET MVC项目,数据库优先和实体框架),并且工作正常。
我最近使用开发人员许可安装了 SQL Server 2016 。在安装过程中,我使用了默认实例,即MSSQLSERVER
。有关信息,生成的InstanceID为MSSQL13.MSSQLSERVER
。
我的解决方案中有一个SQL项目,用于在我的新SQL Server上重新生成表格;我可以通过向导轻松连接到服务器。
我还使用SQL Server Management Studio来验证服务器上的一切正常,并且它工作正常(生成表,连接正常)。
但是,我的代码无法连接到服务器,系统地无法使用error 26 - can't locate server instance
进行第一次调用这是我到目前为止所尝试的内容:
data source
参数更改为localhost
,.
,.\MSSQLSERVER
,.\PCNAME
,PCNAME.MSSQLSERVER
,{{1} },PCNAME.MSSQL13.MSSQLSERVER
,DOMAIN.MSSQLSERVER
=&gt;不起作用DOMAIN\PCNAME
文件,连接到我的服务器,然后复制/粘贴生成的连接字符串:.udp
=&gt;不起作用为什么所有连接向导似乎都能正常工作(SSMS,
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MyDB;Data Source=PCNAME
文件,.udl
生成器,我的数据库项目),而我的代码无法访问服务器?我没有改变任何代码行。
编辑:疯狂的是我在同一台服务器上有一个日志数据库,连接字符串是
.edmx
它实际上记录了网络错误!!那真的是连接字符串错误还是EF错误?我在引用EF(主要和DAL层)的每个项目上使用最新的EF版本6.1.3
答案 0 :(得分:0)
在深入了解之前,让我们从一个有效的连接字符串开始,我刚刚使用Entity Framework 6.1.3在Visual Studio 2017 Enterprise上的本地计算机上进行了测试。
<connectionStrings>
<add name="TesterEntities" connectionString="metadata=res://*/Tester.csdl|res://*/Tester.ssdl|res://*/Tester.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=Tester;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
标记的连接字符串是:
="data source=.;initial catalog=Tester;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"
对于我的测试连接,我使用本地服务器作为2016开发人员版的默认实例(。的缩写)。我正在使用集成安全性和我的目标数据库名称(初始目录)是Tester。
如果实体框架(EF)未正确命中目标,则需要考虑一些事项。