【问题标题】:IIS 7 can't connect to SQLServer 2008IIS 7 无法连接到 SQL Server 2008
【发布时间】:2010-10-07 11:56:28
【问题描述】:

对不起,如果这是网络上最常见的问题,但现在轮到我了。我正在尝试在 MS Sql Server 2008 下的 IIS 7 上发布我的 asp.net mvc 应用程序。我在 Windows Server 2008 虚拟机上。我收到以下经典错误:

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

在 SQLServer 下,允许远程连接被选中。我的连接字符串是:

Data Source=.\MSSQLSERVER;Initial Catalog=mydbname;User Id=sa;Password=mypassword

我也尝试不使用用户名/密码和“Integrated Security=true”。只安装了一个 SQLServer 实例。 我试图在本地和远程访问我的网页。虚拟机上没有活动防火墙。

【问题讨论】:

    标签: sql-server asp.net-mvc iis connection-string


    【解决方案1】:

    确保在 SQL Server 配置工具中将 TCP/IP 设置为传输。

    【讨论】:

    • 在 MSSQLSERVER 的传输中,我可以看到 tcpip 已启用。
    【解决方案2】:

    感谢大家的尝试。我找到了解决方案,它与我忘记提供的信息有关。我希望它能在这些事情上帮助像我一样的新人。

    我用的是NHibernate,连接字符串其实在nhibernate.cfg.xml文件里。 web.config 文件中的那个实际上由我的各种提供者(用户/角色)使用。我通过从 NH 配置文件中删除连接字符串来解决这个问题。我现在用以下方法检索它:

    string connectionString = ConfigurationManager.
    ConnectionStrings["myConnectString"].ConnectionString;
    

    我将它设置在 NH 中:

    Configuration cfg = new Configuration();
    cfg.Configure(cfgFile);
    cfg.SetProperty(NHibernate.Cfg.Environment.ConnectionString, connectionString);
    

    现在我明白了:

    无法打开数据库“mydb” 登录请求。登录 失败的。用户 NT 登录失败 AUTHORITY\网络服务”。

    但这是另一个故事,如果我找不到答案,那就另当别论了。

    PS:我必须使用“。”作为服务器名称,否则 .\MSSQLSERVER 会产生一个新错误“无效的连接字符串”。感谢 Ian 和 Jared 的提示。

    【讨论】:

    • 很高兴听到你把它整理好了。
    • 关于“登录失败” - 您运行的是非英文操作系统吗?由于某些原因,“NT Authority\Network Service”的帐户名称已本地化为其他语言。可悲的是,很多程序的帐户名硬编码为英文名称,并且在外国版本的 Windows 上运行时找不到网络服务。
    • 谢谢 Sam,但不是这样。只是权限问题。
    【解决方案3】:

    这是来自网络配置的实际数据源行吗?

    如果是这样,那么它当然应该用引号引起来,为了安全起见添加 ;最后并检查这是您的实例的实际名称,您可以检查 Windows 服务以获取您的实例名称。

    尝试用localhost 代替.,您可以使用连接字符串中的凭据从sql server management studio 进行连接吗?

    【讨论】:

    • 是的,这是我的网络配置文件中的行。它带有引号,实际上已经有“;”在末尾。我在管理工作室中成功使用了这些凭据。用 localhost 替换也不起作用。是的,MSSQLSERVER 是实例名称(在服务下检查)
    • 基本上我们都认为这应该很简单并且应该可以工作:)。抱歉,这些简单的东西没有帮助。
    【解决方案4】:

    正如罗伯特所说,尝试:

    ConnectionString="Data Source=(LOCAL)\MSSQLSERVER;Initial Catalog=mydbname;User ID=sa;Password=mypassword"
    

    我不确定连接字符串是否区分大小写,但我注意到您使用的是“Id”而不是“ID”。

    编辑: 不确定是否需要 \MSSQLSERVER?

    【讨论】:

      【解决方案5】:

      您确定它是 SQL 的命名实例吗?

      试试

      Data Source=.;Initial Catalog=mydbname;User Id=sa;Password=mypassword

      更新:

      来自this site

      您是否尝试过以下方法:

      • 确保服务器机器可访问,例如,DNS 可以正确解析,您可以 ping 服务器(并非总是如此)。
      • 确保 SQL Browser 服务正在服务器上运行。
      • 如果服务器上启用了防火墙,则需要将 sqlbrowser.exe 和/或 UDP 端口 1434 置于异常中。

      【讨论】:

      • 谢谢贾里德,我也做了你提到的清单。没有成功。
      【解决方案6】:

      好吧,自从早上(过去 8 小时)以来,我面临着同样的上述问题,做了很多事情,比如创建域名、设置新的应用程序池身份,但没有任何效果:(

      我刚刚在web.config 文件中对连接字符串做了一些小改动:

      Integrated Security=False 而不是 True... 现在它运行良好

      【讨论】:

      • 基本集成安全 =True 表示 --- 当前的 Windows 帐户凭据用于身份验证。所以当您的连接使用 SQL Server 身份验证而不是 Windows 时,请设为 False
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多