c# - 无法连接到 SQL Server : "Login failed for user ".”

标签 c# .net sql-server-2008 authentication

我是 .NET 新手,遇到了困难。我正在用 C# 编写代码来访问 Microsoft SQL Server 2008。这是我的 app.config 文件中的代码

<configuration>
  <appSettings>
    <add key="provider" value="System.Data.SqlClient" />
  </appSettings>
  <connectionStrings>
      <add name ="AutoLotSqlProvider"  connectionString =
           "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL  Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AutoLot.mdf"/>   
     <add name ="AutoLotOleDbProvider"  connectionString =
     "Provider=SQLOLEDB;Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\AutoLot.mdf"/>
     </connectionStrings>
</configuration>

当我调试 C# 程序时,我收到此错误消息:

System.Data.SqlClient.SqlException { Login failed for user "." }

我在数据库中找不到用户名

这是我的程序代码:

public class Program
{
    static void Main(string[] args)
    {
        // Get Connection string/provider from *.config.
        Console.WriteLine("***** Fun with Data Provider Factories *****\n");
        string dp = ConfigurationManager.AppSettings["provider"];
        string cnStr = ConfigurationManager.ConnectionStrings["AutoLotSqlProvider"].ConnectionString;

        // Get the factory provider.
        DbProviderFactory df = DbProviderFactories.GetFactory(dp);

        // Now make connection object.
        using (DbConnection cn = df.CreateConnection())
        {
            Console.WriteLine("Your connection object is a: {0}", cn.GetType().Name);
            cn.ConnectionString = cnStr;
            cn.Open();
            if (cn is SqlConnection)
            {
                // Print out which version of SQL Server is used.
                Console.WriteLine(((SqlConnection)cn).ServerVersion);
            }

            // Make command object.
            DbCommand cmd = df.CreateCommand();
            Console.WriteLine("Your command object is a: {0}", cmd.GetType().Name);
            cmd.Connection = cn;
            cmd.CommandText = "Select * From Inventory";

            // Print out data with data reader.              
            using (DbDataReader dr = cmd.ExecuteReader())
            {
                Console.WriteLine("Your data reader object is a: {0}", dr.GetType().Name);

                Console.WriteLine("\n***** Current Inventory *****");
                while (dr.Read())
                    Console.WriteLine("-> Car #{0} is a {1}.",
                      dr["CarID"], dr["Make"].ToString());
            }
        }
    }
}

最佳答案

在连接字符串中,您尚未指定是需要 Windows 身份验证还是 SQL 身份验证。对于 SQL 身份验证,它应该是(显然用您的用户名和密码替换 x 和 y):

<add name ="AutoLotSqlProvider" connectionString = 
 "Data Source=.\SQLEXPRESS;User ID=x;Password=y;AttachDbFilename=C:\...\AutoLot.mdf"/>

对于 Windows 身份验证,它应该是:

<add name ="AutoLotSqlProvider"  connectionString =
 "Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDbFilename=C:\...\AutoLot.mdf"/>

关于c# - 无法连接到 SQL Server : "Login failed for user ".”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217472/

相关文章:

sql - 适用于生产 SQL Server 的 Hyper-V 快照备份策略?

c# - 对 IE 工具栏中实例的静态引用

c# - 未绑定(bind)的网格控件

javascript - 启用 使用 Jquery 禁用某些组件

.net - EndInvoke() - 可选或不可选?

c# - 在C#源代码中使用特殊字符是否错误,例如 "ñ"?

c# - Mongo C# 驱动程序 - 使用嵌套动态构建过滤器

.net - 如何从 SD 卡读取原始字节?

sql-server-2008 - 是否可以在 SQL Server 2008 上部署 SSIS 2012 包

sql - 两个字段的唯一约束,以及它们的相反