【问题标题】:Connection String for Microsoft SQL Server 2008 R2 in ASP.NETASP.NET 中 Microsoft SQL Server 2008 R2 的连接字符串
【发布时间】:2013-03-31 00:18:04
【问题描述】:

我正在通过一本书自学 ASP.NET。到目前为止,它甚至在 SQL Developer 中的 SQL 上都做得很好,但我无法从外部应用程序连接。

我正在使用 Visual Studio 2010 Pro SP1、SQL Server 2008 R2 Standard 和使用 IIS 7.5 的 Windows 7 Professional SP1。我在 ASP.NET 中使用的语言是 VB.NET,但对 C# 的答案很满意。

我永远无法让连接字符串正常工作

connectionString="Server=ASUS-P5Q\MSSQLSERVER;Database=Dorknozzle; User Id=xxxxxxxxx; Password=xxxxxxxxx;"

我总是收到以下错误

“/”应用程序中的服务器错误。
用户 'ASUS-P5Q\xxxxxx' 登录失败。

说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:用户“ASUS-P5Q\xxxxxxx”登录失败。

来源错误:

第 17 行:conn.Open()**

我已关闭用户帐户控制、防病毒和防火墙,但没有任何效果:-(

【问题讨论】:

  • 为什么是ASUS-P5Q\MSSQLSERVER?你试过简单的localhost:port吗? (因为我猜你正在尝试从同一台机器连接)
  • 您可以使用 Sql Server Management Studio 连接到该服务器/数据库/用户/密码组合吗?或者使用命令行获取结果:sqlcmd -S ASUS-P5Q\MSSQLSERVER -d Dorknozzle -U xxx -P xxx -Q "select * from table"?
  • 您是否安装了带有特定命名实例的 SQL Server - 或者只是标准的默认实例?如果您使用默认实例,那么您应该能够在连接字符串中将其命名为.(local)ASUS-P5Q - 不需要MSSQLSERVER 作为实例名称......所以试试: server=ASUS-P5Q;Database=.... 看看是否可行

标签: asp.net vb.net authentication iis-7.5 sql-server-2012


【解决方案1】:

正如@MTAdmin 所说,您似乎使用集成身份验证..

使用此方法时,您只能使用您的登录作为凭据,因此请确保您的应用程序池以该用户身份运行(在本例中为“ASUS-P5Q\xxxxxx”)并使用以下连接字符串。

Server=ASUS-P5Q\MSSQLSERVER;Database=Dorknozzle;Integrated Security=SSPI;

为了将来参考,我建议您使用ConnectionStrings.com,当您像我一样忘记那个偷偷摸摸的连接字符串时。

【讨论】:

    【解决方案2】:

    出现错误消息表明您正在使用集成身份验证( Windows 用户名和密码)。这可能失败的原因有很多。

    为简单起见,您也可以尝试使用 Sql 身份验证:在 Sql 中创建一个用户并在连接字符串中指定该用户名和密码。我通常从 Sql 用户名和密码开始,然后在部署前决定我的最终身份验证方法。

    【讨论】:

      【解决方案3】:

      要连接到本地数据库引擎,您可以使用 .\ 语法,如:.\sql2008:

      connectionString="Server=.\MSSQLSERVER;Database=Dorknozzle; User Id=xxxxxxxxx; Password=xxxxxxxxx;Integrated Security=false;"
      

      【讨论】:

        【解决方案4】:

        我如何解决我的问题是我在 SQL Management Studio 下创建了一个用户并使用了 SQL Server 用户身份验证。这是最后对我有用的字符串...

        connectionString="数据源=ASUS-P5Q\MSSQLSERVER,1433;初始目录=Dorknozzle;集成安全=False;用户ID=SQLDT;密码=####" providerName="System.Data.SqlClient" />

        感谢大家的帮助 :)

        【讨论】:

          【解决方案5】:
          using System;
          using System.Collections.Generic;
          using System.Data.SqlClient;
          using System.Linq;
          using System.Text;
          
          namespace User_Management
          {
              class DatabaseConnection
              {
                  public string GetConnectionString()
                  {
                      return @"server=AFORE\MSSQLSERVER; Integrated Security=SSPI; Database = prictice;";
                  }
          
                  public SqlConnection GetConnectionObj()
                  {
                      SqlConnection connectionObj=new SqlConnection(GetConnectionString());
                      connectionObj.Open();
                      return connectionObj;
                  }
                  public void ExecuteSqlCommandAndCloseConnection(string insertQueryString, SqlConnection connectionObj)
                  {
                      SqlCommand sqlCommandObj = new SqlCommand(insertQueryString, connectionObj);
                      sqlCommandObj.ExecuteNonQuery();
                      connectionObj.Close();
                  }
                  public void ExecuteSqlCommandOnly(string insertQueryString, SqlConnection connectionObj)
                  {
                      SqlCommand sqlCommandObj = new SqlCommand(insertQueryString, connectionObj);
                      sqlCommandObj.ExecuteNonQuery();
          
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-01-11
            • 1970-01-01
            • 2012-09-19
            相关资源
            最近更新 更多