【问题标题】:error: 26 - Error Locating Server/Instance Specified. (Can't connect to my local Db From my host server)错误:26 - 查找指定的服务器/实例时出错。 (无法从我的主机服务器连接到我的本地数据库)
【发布时间】:2012-08-02 22:41:05
【问题描述】:

我之前已经问过这个问题,但没有任何好的回应, 我的问题是我的 app_data 文件夹中有一个本地数据库(aspnetdb.mdf),这是 web.config 中的连接字符串:

<add name="ApplicationServices" 
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
     providerName="System.Data.SqlClient" />

所以我的站点在我的本地 iis 服务器上运行良好,但是当我将站点放在我的主机服务器中时,我收到以下错误消息: 建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)。

在另一台服务器上,我有 sql server 2008(接受远程连接,并且我有相同的实例名称 SQLEXPRESS)。我真的尽我所能尝试了一切,但没有任何好的结果。非常感谢您的帮助,谢谢。

【问题讨论】:

    标签: c# asp.net sql-server sql-server-2008 web-config


    【解决方案1】:

    此格式表示本地连接:

    .\SQLEXPRESS
    

    从另一台服务器,您需要指定服务器名称或 IP 地址,例如:

    192.168.1.205\SQLEXPRESS
    YOURMACHINE\SQLEXPRESS
    

    您还需要验证实例是否为 SQL Server Express。从your other nearly identical question 来看,它看起来像一个默认实例。

    您还应该停止使用这种愚蠢的用户实例/attachDbFilename 技术。将数据库正确附加到实例,然后在连接字符串中使用 Initial Catalog=aspnetdb; 引用逻辑数据库名称。由于多种原因,此用户实例功能已被弃用,这肯定是其中之一。

    当然,可能还有其他网络问题会阻止这种情况,例如如果服务器位于不同的域中,则存在防火墙设置干扰等。但是您的其他服务器将永远无法使用服务器名称中的点来访问您的计算机。

    EDIT 提供婴儿步骤,因为显然我的建议没有被遵循。假设您实际上已在新服务器上附加了 aspnetdb 数据库,请尝试以下操作:

     connectionString="data source=192.168.85.124\SQLEXPRESS;
       Integrated Security=SSPI;
       Initial Catalog=aspnetdb;" 
    

    如果您毕竟没有使用 SQL Express 命名实例,请尝试:

     connectionString="data source=192.168.85.124;
       Integrated Security=SSPI;
       Initial Catalog=aspnetdb;" 
    

    对于 SQL 身份验证,请使用您在 Management Studio 中使用的相同用户名/密码:

     connectionString="data source=192.168.85.124;
       User ID=username; Password=password;
       Initial Catalog=aspnetdb;" 
    

    这是解决 101 问题。如果您仍然无法让它发挥作用,您可能需要聘请一名顾问 10 分钟来为您修复它,因为无法弄清楚您做了什么以及为什么无法让它发挥作用。

    【讨论】:

    • 嗨@Aaron Bertrand,谢谢回复,这是我的新连接字符串:。我得到同样的错误!
    • 你能给我一个例子吗?
    • 您是否附加了 aspnetdb 数据库,或者您希望能够继续使用此 |DataDirectory| 命名法并引用物理文件而不是逻辑数据库?
    • 听起来您选择 SSPI 是为了安全,但也不是故意的。您是否在有权访问数据库的新 SQL Server 上创建了登录名?我是否可以建议将 Access 作为一个更易于使用和管理的数据库?
    • 我认为您需要删除 App_data 中的 MDF 文件并停止从您的应用、Visual Studio、SSMS 等中引用它。您只需要 一个 的副本数据库,正确管理的是实际附加到 SQL Server 实例的数据库,而不是用户目录中的某个静态文件,每次创建对它的新引用时都会复制它。
    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 2011-09-21
    • 2015-08-22
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    相关资源
    最近更新 更多