无法连接到SQL Server:"用户登录失败""。 [英] Can't connect to SQL Server: "Login failed for user "."

查看:354
本文介绍了无法连接到SQL Server:"用户登录失败""。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新的。NET,并撞到南墙。我正在写code在C#中访问的Microsoft SQL Server 2008。这是我的app.config文件中code

 <结构>
  <的appSettings>
    <添加键=提供者值=System.Data.SqlClient的/>
  < /的appSettings>
  <的ConnectionStrings>
      <添加名称=AutoLotSqlProvider的connectionString =
           数据源= \ SQLEX $ P $干燥综合征; AttachDbFilename = C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL10_50.SQLEX $ P $干燥综合征\ MSSQL \ DATA \ AutoLot.mdf/>
     <添加名称=AutoLotOleDbProvider的connectionString =
     供应商= SQLOLEDB;数据源= \ SQLEX $ P $干燥综合征; AttachDbFilename = C:\ Program Files文件\ Microsoft SQL Server的\ MSSQL10_50.SQLEX $ P $干燥综合征\ MSSQL \ DATA \ AutoLot.mdf/>
     < /的ConnectionStrings>
< /结构>
 

当我调试C#程序我收到此错误信息:

  

System.Data.SqlClient.SqlException {用户登录失败。 }

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

这是我的程序code:

 公共类节目
{
    静态无效的主要(字串[] args)
    {
        //获取连接字符串/供应商从* .config文件。
        Console.WriteLine(*****玩转数据提供工厂***** \ N);
        字符串DP = ConfigurationManager.AppSettings [提供者];
        字符串cnStr = ConfigurationManager.ConnectionStrings [AutoLotSqlProvider]的ConnectionString。

        //获取工厂提供。
        DbProviderFactory DF = DbProviderFactories.GetFactory(DP);

        //现在进行连接对象。
        使用(的DbConnection CN = df.CreateConnection())
        {
            Console.WriteLine(你的连接对象是:{0},cn.GetType()名称);
            cn.ConnectionString = cnStr;
            cn.Open();
            如果(CN是的SqlConnection)
            {
                //打印出哪个版本的SQL Server使用。
                Console.WriteLine(((的SqlConnection)CN).ServerVersion);
            }

            //使命令对象。
            的DbCommand CMD = df.CreateCommand();
            Console.WriteLine(你的命令对象是:{0},cmd.GetType()名称);
            cmd.Connection = CN;
            cmd.CommandText =SELECT * FROM清单;

            //打印出数据读取数据。
            使用(DbDataReader博士= cmd.ExecuteReader())
            {
                Console.WriteLine(你的数据读取器对象是:{0},dr.GetType()名称);

                Console.WriteLine(\ñ*****当前库存*****);
                而(dr.Read())
                    Console.WriteLine( - >汽车#{0} {1}。,
                      博士[CarID],博士[请]的ToString())。
            }
        }
    }
}
 

解决方案

在您的连接字符串,你没有指定你是否希望Windows身份验证或SQL身份验证。对于SQL权威性应该是(显然替换x和y与您的用户名和密码):

 <添加名称=AutoLotSqlProvider的connectionString =
 数据源= \ SQLEX $ P $干燥综合征;用户ID = X;密码= Y; AttachDbFilename = C:\ ... \ AutoLot.mdf/>
 

有关Windows验证它应该是:

 <添加名称=AutoLotSqlProvider的connectionString =
 数据源= \ SQLEX $ P $干燥综合征;集成安全性= SSPI; AttachDbFilename = C:\ ... \ AutoLot.mdf/>
 

I'm new with .NET and have hit a brick wall. I'm writing code in C# to access a Microsoft SQL Server 2008. This is the code from my app.config file

<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>

When I debug the C# program I'm getting this error message:

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

I cannot find a user name in the database

This is my program code:

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());
            }
        }
    }
}

解决方案

In your connection string, you haven't specified whether you want Windows Authentication or SQL Authentication. For SQL auth it should be (obviously replace x and y with your username and password):

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

For Windows auth it should be:

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

这篇关于无法连接到SQL Server:&QUOT;用户登录失败&QUOT;&QUOT;。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆