我将在本地网络上演示ASP.NET MVC网站。此应用程序与数据库建立连接:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-EBC-20141127093222.mdf;Initial Catalog=aspnet-EBC-20141127093222;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
我希望IIS和每当我在本地运行我的应用程序时都可以使用这个数据库。我在IIS上创建了一个站点 - 它运行的是.NET v4。我的项目位于c:\inetpub\www\ebc
。我可以发布网站,但在查看页面时收到此错误:
“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:50 - 发生本地数据库运行时错误。在LocalDB实例API方法调用中发生意外错误。请参阅Windows应用程序事件日志以获取错误详细信息。“
我知道我需要允许通过microsoft sql server manager远程连接到sql server?有没有办法在其他地方做到这一点?
答案 0 :(得分:8)
最佳解决方案是使用SQL Expression,但如果您不想要使用mvc应用程序使用localdb,则必须执行几个步骤
sqllocaldb share v11.0 IIS_DB
(然后数据库将被共享,IIS可以访问它)Data Source=(LocalDb)\.\IIS_DB
然后再次发布请注意,此时您可能会收到访问拒绝错误,并且有解决方法
对于服务器名称,输入(LocalDb)\.\IIS_DB
,然后右键单击连接并选择新查询并执行此命令
create login [IIS APPPool\DefaultAPPPool] from windows;
exec sp_addsrvrolemember N'IIS APPPool\DefaultAPPPool, sysadmin
答案 1 :(得分:3)
如果计算机中安装了多个版本的SQL Server localDB,则此错误非常常见。
尝试使用(localdb)\mssqllocaldb
作为通用服务器名称连接到LocalDB自动实例,而不是“v11.0”或“v12.0”。
上面的自动localdb实例,在所有版本中都有一个默认名称,避免名称和版本之间发生冲突。版本
重要:将localdb更新为新版本时,请记住使用旧版本创建的数据库不适用于较新版本。
答案 2 :(得分:1)
我这样解决了:
首先使用Visual Studio的Developer PowerShell或Developer Command Prompt作为管理员,并确认您只有LocalDb的一个实例。
键入sqllocaldb info
以查看您的LocalDb实例。
然后我关注了这篇文章,并将“应用程序池标识”设置为我当前登录的用户,信用:https://stackoverflow.com/a/38294458/3850405
我发现在其中将应用程序池的Load User Profile
设置为true是不够的,还需要在通常位于{{的setProfileEnvironment
中的applicationHost.config
中将C:\Windows\System32\inetsrv\config
设置为true。 1}}。通过这种配置,它可以正常工作:
原始答案:
答案 3 :(得分:0)
看这篇文章: 使用LocalDB和完整IIS的这两篇帖子应该会为您提供更多信息。特别是第二部分看似相关,但第一部分也包含一些背景。