Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > MSSQL & C# no open connect


Автор: chudak 22.7.2008, 01:26
немогу разобраться почему не открывается соединение!!!

ошибка:

An error has occurred while establishing a connection to the server.  When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

строка соединения:

Код

string connString = "Data Source=127.0.0.1\\SQLEXPRESS;Database=auth;Uid=sa;Pwd=;Integrated Security=SSPI;";


доков кучу перелистал -немогу понять как справится!!!
Заранее спасибо!!!

Автор: Idsa 22.7.2008, 05:52
chudak, сразу в глаза бросается, что одновременно передается логин с паролем и используется доменная аутентификация. Нужно выбрать что-то одно: либо убрать Uid и Pwn, либо Integrated Security.

Автор: chudak 22.7.2008, 09:02
Цитата(Idsa @  22.7.2008,  05:52 Найти цитируемый пост)
Нужно выбрать что-то одно: либо убрать Uid и Pwn, либо Integrated Security


убрал Integrated Security
всёравно тоже самое, подключение тянется и на Open вываливается таже ошибка!!!

я первый раз трогаю MSSQL и поэтому конечно что-то упущу!!!

вот метод в котором подключение:

Код

 private bool auth(string log, string pass)
    {
        bool flag = false;

        string connString = "Data Source=127.0.0.1\\SQLEXPRESS;Database=auth;Uid=sa;Pwd=;";

        string strSQL = "select * from auth_table where login ='" + log + "' AND pass ='" + pass + "'";
        
       DataSet userDS = new DataSet();
        SqlConnection m_conn;
        SqlDataAdapter m_dataAdapter;
        SqlCommand m_Command;


        m_conn = new SqlConnection(connString);
        m_conn.Open();
        try
        {      
            this.Label1.Text += "open - ";
            m_dataAdapter = new SqlDataAdapter(strSQL, m_conn);
            m_dataAdapter.Fill(userDS);
            m_conn.Close();
        }
        catch (Exception ex)
        {
            userDS = null;
        }

        if (userDS != null)
        {
            if (userDS.Tables[0].Rows.Count > 0)

                flag = true;
        }
        return flag;
    }

Автор: Idsa 22.7.2008, 09:05
chudak, попытка №2. По-моему по умолчанию Sql Server не понимает 127.0.0.1. Попробуйте заменить 127.0.0.1 на (local):
string connString = "Data Source=(local)\\SQLEXPRESS;Database=auth;Uid=sa;Pwd=;";

Автор: chudak 22.7.2008, 09:12
Цитата(Idsa @  22.7.2008,  09:05 Найти цитируемый пост)
Data Source=(local)\\SQLEXPRESS;


ооо... избавились от той ошибки, но теперь логин его не устраивает:

Login failed for user 'sa'. The user is not associated with a trusted SQL Server connection.

и теперь вдруг еще и вот так ругаеться стала на Open:

A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - С обоих концов канала отсутствуют процессы.)

что это??? ничего не понимаю!!!

Автор: Idsa 22.7.2008, 09:19
chudak, дело в том, что по умолчанию в Sql Server включена только Windows Authentication. У Вас 2 варианта:
1. убрать из строки подключения логин с паролем и указать integrated security=SSPI
2. в Sql Server Management Studio щелкнуть правой кнопкой на имени сервера -> выбрать Properties -> зайти на вкладку Security -> в разделе Server Authentication вместо "Windows Authentication mode" выбрать "Sql Server and Windows Authentication mode".

Добавлено через 45 секунд
Забыл добавить, что Microsoft не рекомендует смешанную аутентификацию. Подробности - здесь: http://msdn.microsoft.com/en-us/library/aa905171(SQL.80).aspx

Автор: chudak 22.7.2008, 09:28
тоесть проверку подлинности SQL Server и Windows ???

включил, теперь коннект с опеном проходят, но как же логин с паролем???

что значит integrated security=SSPI и почему он заменяет логин с паролем???

и как если мне нужно перенести эту базу на другой компутер(серв) настроить правильно строку подключения если там именно логин и пароль нужен???

Автор: Idsa 22.7.2008, 09:36
chudak, как я писал выше, в Sql Server существует 2 механизма аутентификации: windows и смешанный. Если на том сервере требуется логин с паролем, значит там используется смешанный режим аутентификации. Ничто не мешает Вам установить такой же режим аутентификации и на своем сервере, следуя вышеописанным указаниям.

Автор: chudak 22.7.2008, 10:01
Цитата(Idsa @  22.7.2008,  09:36 Найти цитируемый пост)
смешанный


вот я и поставил смешаный, проверка подлиности SQL Server и Windows

убрал integrated security=SSPI , тоесть даже заменил на Uid=sa;Pwd=; и он мне говорит что:

Login failed for user 'sa'. The user is not associated with a trusted SQL Server connection.

что я тут упустил еще???

Автор: Idsa 22.7.2008, 10:08
Цитата(chudak @  22.7.2008,  14:01 Найти цитируемый пост)
что я тут упустил еще???

Вы забыли для начала попытаться разобраться с проблемой самостоятельно, а потом уже постить на форум.
Гугл выдает вот эту страничку: http://support.microsoft.com/kb/555332, на которой говорится, что проблема возникает, когда включена Windows аутентификация. Так что я могу только предположить, что Вы не включили смешанную авторизацию. Если все-таки включили, то, возможно, пароль неправильный.

Автор: chudak 22.7.2008, 10:11
у меня просто с англазким проблема, смешаная включена у меня аутентификация, а пароль та там вроде стандартный

Автор: Idsa 22.7.2008, 10:18
chudak, попробуйте включить в строку подключения значение Trusted_Connection=no:
string connString = "Data Source=(local)\\SQLEXPRESS;Database=auth;Uid=sa;Pwd=;Trusted_Connection=no"; 

Автор: chudak 22.7.2008, 11:41
вообще как то странно стало, теперь хоть правильные логин и пароль вводиш, хоть неправильные, теперь всегда true возвращает, ниче непойму:

Код

    private bool auth(string log, string pass)
    {
        bool flag = false;
        string connString = "Data Source=(local)\\SQLEXPRESS;Database=auth;integrated security=SSPI;";
        m_conn = new SqlConnection(connString);
        m_conn.Open();

        string strSQL = "select * from auth_table where login ='" + log + "' AND pass ='" + pass + "'";

        DataTable userDS = new DataTable();
        try
        {
            conn();
            m_dataAdapter = new SqlDataAdapter(strSQL, m_conn);

            m_dataAdapter.Fill(userDS);
            m_conn.Close();
        }

        catch (Exception ex)
        {
            userDS = null;
        }

        if (userDS != null)
        {
            if (userDS.Rows.Count > 0)
                this.Label1.Text += userDS.Rows[0]["login"].ToString();

           
            
           
                flag = true;
        }
        return flag;
    }


и логин не выводит, значит поле пустое!!!

Автор: Idsa 22.7.2008, 11:47
chudak, 1 тема - 1 вопрос. Насколько я понял, connection заработал. А уж что там считывается, что не считывается - в отдельной теме.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)