SQL网络接口,错误:26 - 找到为MDF文件指定的服务器/实例时出错

时间:2013-09-02 17:24:01

标签: asp.net sql-server iis deployment publish

我已使用Visual Studio内置功能向我的应用程序添加了一个数据库文件(.mdf)。数据库位于App_Data文件夹中。它运行正常。但是当我发布它并将其上传到服务器时,就会出现这个错误。

  

发生与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器或   无法访问。验证实例名称是否正确   SQL Server配置为允许远程连接。 (提供者:SQL   网络接口,错误:26 - 查找服务器/实例时出错   指定)

我访问了类似的情况,但很困惑。我不知道SQL Server的哪个版本和版本正在服务器上运行。我使用Filezilla上传项目。我的web.config中的连接字符串如下:

<add name="ConnectionString" 
     connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" 
     providerName="System.Data.SqlClient"/>

请逐步描述流程。

提前致谢。

2 个答案:

答案 0 :(得分:3)

整个用户实例和AttachDbFileName = 方法存在缺陷 - 充其量!此外,它仅受SQL Server的 Express 版本支持 - 因此,如果您的主机具有除 Expres 之外的其他任何内容,那么您基本上就是搞砸了。

我认为真正的解决方案将是

  1. 安装SQL Server Management Studio Express

  2. SSMS Express 中创建数据库,为其指定一个逻辑名称(例如MyDatabase

  3. 使用其逻辑数据库名称(在服务器上创建时给定)连接到它 - 并且不要乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将类似于:

    Data Source=.\\SQLEXPRESS;Database=MyDatabase;Integrated Security=True
    

    其他所有内容都完全与以前相同......

  4. 现在,当您将网站上传到托管网站时,您需要获取必要的SQL脚本来在托管网站上创建和填充数据库 - 您可以使用Tasks > Generate Scripts中的Server=(ip-address-or-name);Database=MyDatabase;User ID=YourUserIdHere;Pwd=YourPassword 来完成此操作。 SSMS Express工具,或通过其他方式。

    然后,在托管站点上,您需要执行这些SQL脚本来创建和填充数据库(稍后:执行更改脚本以使数据库保持最新)。

    您的连接字符串也很可能会改为:

    SQLEXPRESS

    因为托管服务提供商不使用{{1}}命名实例(但很可能是没有任何名称的默认实例)。您需要向提供商询问详细信息 - 可能是您必须提供其他实例名称!这完全取决于提供者,我们无法知道 - 你必须要求并找出答案。

答案 1 :(得分:1)

我的修复是确保我在解决方案中有正确的启动项目集。右键单击项目和&#34;设置为启动项目&#34;