SQL网络接口,错误:50 - 发生本地数据库运行时错误。指定的LocalDB实例不存在

时间:2014-11-05 23:59:26

标签: asp.net sql-server visual-studio iis kentico

编辑: 我原来遗漏的一个重要细节(因为我不知道它很重要)是我们在完整的IIS中运行这些网站,而不是从IIS运行表达


我们正在尝试为Kentico CMS设置本地开发环境,将我们的本地计算机添加到我们当前的Dev同步链中 - >分期 - > Prod(所以我们将与当地人结束 - > Dev - > Staging - > Prod)。

我们将我们的Dev DB复制到我们的本地机器上,然后复制到SQL Server的(localdb)\ v11.0实例上,但我们在除了我的以外的所有计算机上都遇到了问题。

这是我们得到的错误:

  

应用程序无法连接到数据库,请检查   web.config文件中的连接字符串和SQL Server可用性。

     

原始错误:

     

发生与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器或   无法访问。验证实例名称是否正确   SQL Server配置为允许远程连接。 (提供者:SQL   网络接口,错误:50 - 发生本地数据库运行时错误。   指定的LocalDB实例不存在。 )

我已经尝试了其他SO答案和其他网站的大量建议,以弄清楚我们为什么会收到此错误(以及为什么它在我的机器上没有发生),但没有运气。我们可以在SSMS中连接到(localdb)\ v11.0但我们无法通过VS连接到它(相同的错误)。此外,当我们打开Sql Server配置管理器时,我们没有看到SQL Server服务的任何列表。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

  1. 确保已安装.NET Framework 4.0.2+
  2. 将AppPool设置为在NetworkService帐户下运行。
  3. 在数据库中为该帐户创建一个登录名。

    USE [master]; CREATE LOGIN [NT AUTHORITY\NETWORK SERVICE] FROM WINDOWS; EXEC sp_addsrvrolemember N'NT AUTHORITY\NETWORK SERVICE', SYSADMIN;

  4. 通过运行与所有用户共享您的实例 SqlLocalDB share Kentico KenticoShared

  5. 使用以下格式的连接字符串:
  6. <add name="CMSConnectionString" connectionString="Data Source=(localdb)\.\KenticoShared;Initial Catalog=KenticoDB;Integrated Security=True;Connect Timeout=60" />

    1. 如果它无法使用命名管道:
    2. <add key="CMSConnectionString" value="Persist Security Info=False;Integrated Security=SSPI;database=KenticoDB;server=np:\\.\pipe\LOCALDB#D2BA6590\tsql\query;Current Language=English;Connection Timeout=120;" />

      注意:

      1. 可以通过运行以下C#
      2. 来确定计算机上NetworkService帐户的确切名称

        var ns = new SecurityIdentifier(WellKnownSidType.NetworkServiceSid, null).Translate(typeof(NTAccount)).ToString()

        1. 命名管道可以通过在CMD中运行来确定:SqlLocalDB info KenticoShared
        2. 不要忘记运行您的实例SqlLocalDB start KenticoShared

答案 1 :(得分:0)

看起来有点模糊,但你看过http://support.microsoft.com/kb/941823,&#34; SQL Server配置管理器中没有列出部分或全部SQL Server 2005服务......&#34;?

即使您可以使用Management Studio进行连接,通常还有两件事会阻碍从应用程序连接到SQL Server。首先,您应确保在实例http://msdn.microsoft.com/en-us/library/bb909712(v=vs.90).aspx上启用了TCP。其次,由于您要连接到一个命名实例,我假设它不是标准端口上运行的默认实例,因此您需要确保SQL Server Browser服务正在运行,{{3} }。这是将应用程序重定向到非标准端口而无需直接指定端口的原因。 Management Studio可以通过它们的原因是它可以通过命名管道连接并完全跳过TCP。

答案 2 :(得分:0)

看到这篇文章,因为这解决了我的问题: 使用LocalDB和完整IIS的这两篇帖子应该会为您提供更多信息。特别是第二部分看似相关,但第一部分也包含一些背景。

  1. Part 1: User Profile
  2. Part 2: Instance Ownership
  3. 信用:IIS connecting to LocalDB