Не удается подключиться к SQL Server: «Ошибка входа пользователя». » - PullRequest
2 голосов
/ 28 августа 2011

Я новичок в .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 {Ошибка входа пользователя "."}

Я не могу найти имя пользователя в базе данных

Это мой программный код:

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

Ответы [ 3 ]

4 голосов
/ 28 августа 2011

В строке подключения вы не указали, хотите ли вы 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"/>
1 голос
/ 28 августа 2011

В вашей строке подключения отсутствует схема аутентификации. Вам нужно либо передать имя пользователя / пароль, либо использовать встроенную защиту при создании соединения.

1 голос
/ 28 августа 2011

Вам необходимо указать имя пользователя и пароль для входа в базу данных Sql.

Для просмотра списка строк подключения проверьте ConnectionStrings

Строка подключения OLEDB для sql 2008: Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername; Pwd=myPassword;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...