【问题标题】:Error connecting to SQL Server via alias from local IIS7通过本地 IIS7 的别名连接到 SQL Server 时出错
【发布时间】:2013-05-02 15:43:53
【问题描述】:

只是想知道是否有人以前遇到过这种情况。有几个开发人员看过这个,但我们都无法弄清楚。

我有一个使用 EF4 通过别名连接到 Sql Server 数据库的 ASP.NET Web 窗体应用程序。别名设置为指向我的机器名称(不是“.”或“本地”)。当我用 VS2012 运行它时,它工作正常。如果我将它部署到我的本地 IIS7 实例并尝试在浏览器中将其拉起,我会收到错误消息:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:命名 Pipes Provider,错误:40 - 无法打开与 SQL Server 的连接)

我的连接字符串如下所示:

Data Source=aliasName;Initial Catalog=databaseName;Integrated Security=True;MultipleActiveResultSets=True

如果我更改连接字符串以使数据源是我的机器名而不是别名,则它在 IIS7 中可以正常工作。因此,问题似乎与别名有关,并且仅在用完 IIS7 时才出现。

作为一种解决方法,我使用本地构建配置文件来部署一个不使用本地别名的不同 web.config,但我真的很想弄清楚它为什么不起作用。

任何建议将不胜感激。

【问题讨论】:

    标签: asp.net .net sql-server entity-framework connection-string


    【解决方案1】:

    查看this,具体如下:

    使用 SQL Server 别名的先决条件

    1. 您必须愿意让您的客户端通过网络协议连接到实例。当客户端和实例位于同一系统上时,无法使用可用的共享内存连接。我为我的别名使用 TCP/IP 连接。

    2. 在托管 SQL Server 实例的系统上,您必须运行 SQL Server Browser 服务(这通常将启动模式设置为自动)。

    3. 在 64 位系统上,如果您同时拥有 32 位和 64 位客户端,则需要为 32 位和 64 位客户端创建一个别名。

      李>

    【讨论】:

    • 另外(因为我花了几分钟才做出这个飞跃):如果您从机器命名的实例(即默认服务器名称,即您的机器名称)到命名版本的别名您可能需要用您的机器名称限定别名。因此,如果您希望您的实例为 myRenamedSql,则需要将其别名为 myMachineName\myRenamedSql。可能还有其他一些微妙之处,YMMV。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2020-06-30
    相关资源
    最近更新 更多