No se puede conectar a SQL Server: "Error de inicio de sesión para el usuario". "

Soy nuevo con .NET y me he estrellado contra una pared de ladrillos. Estoy escribiendo código en C # para acceder a Microsoft SQL Server 2008. Este es el código de mi archivo 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>

Cuando depuro el programa C #, aparece este mensaje de error:

System.Data.SqlClient.SqlException {Error de inicio de sesión para el usuario "." }

No encuentro un nombre de usuario en la base de datos

Este es mi código de programa:

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

preguntado el 27 de agosto de 11 a las 21:08

3 Respuestas

En su cadena de conexión, no ha especificado si desea la autenticación de Windows o la autenticación de SQL. Para la autenticación de SQL debería ser (obviamente, reemplace xey con su nombre de usuario y contraseña):

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

Para la autenticación de Windows debería ser:

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

Respondido 28 ago 11, 01:08

Debe especificar un nombre de usuario y una contraseña para iniciar sesión en la base de datos SQL.

Para obtener una lista de cadenas de conexión, consulte ConnectionStrings

La cadena de conexión OLEDB para sql 2008 es Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;

Respondido el 20 de junio de 20 a las 12:06

A su cadena de conexión le falta un esquema de autenticación. Debe pasar un nombre de usuario / contraseña o utilizar la seguridad integrada al crear una conexión.

Respondido 28 ago 11, 01:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.