Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
Добрый день, понимаю что вопрос глупый, но никак не могу подклчюится в простейшем тестовом приложении к созданной БД.

Ситуация: создал БД, состряпал альфа версию приложения чтоб просто отображало данные в таблицах.

Запуская SSMS выбираю авторизацию Виндовс - работает.
Дальше думаю, по сети людям надо сделать пользователей на SQL сервере.
Подключаюсь, создаю ИМЯ ВХОДА qwerty и пароль qwerty, БД по умолчанию делаю свою,

Перехожу к БД, там появился мой пользователь ,делаю его овнером БД, роль сервера делаю public по умолчанию

Дале создаю пользователя Qwe, собственные схемы не указываю,
Членство в роли БД указываю accessadmin, datareader, datewriter, owner.

Запуская SSMS ввожу qwerty - qwerty, делаю выбираю БД и просматриваю таблицы, потом запускаю свое приложение, там вызываю стандартный диалог, выбираю авторизация SQL и ввожу qwerty - qwerty и у меня даже выводится список пользовательских таблиц, значит подключение есть НО когда я нажимаю подключить, то вылетает ошибка входа пользователя qwerty

В события системы ошибка: Ошибка входа пользователя "qwerty". Причина: пароль не соответствует переданному имени входа. [КЛИЕНТ: 10.3.0.12]

Я даже не знаю что можно предположить... проблема явно в сервере.. почему он не пускает с этими данными.

Авторизация Windows подключается без проблем.
5 апр 12, 12:58    [12369903]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
JesterOK
В события системы ошибка: Ошибка входа пользователя "qwerty". Причина: пароль не соответствует переданному имени входа.
Значит, пароль неправильно передаёте.

JesterOK
проблема явно в сервере.. почему он не пускает с этими данными.
Если бы причина была другая, то и ошибка была бы другая.
5 апр 12, 13:05    [12369930]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
alexeyvg,

А, как его можно неправильно или правильно передавать?? кодировка ??

Подключение через ADOConnection
5 апр 12, 13:13    [12369973]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
JesterOK,

Убрал пароль и подключиться удалось.. значит проблема в кодировке.. получается менять надо либо на стороне сервера, либо клиента.. но в свойствах проекта я не видел таких возможностей
5 апр 12, 13:18    [12370011]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
JesterOK
alexeyvg,

А, как его можно неправильно или правильно передавать?? кодировка ??

Подключение через ADOConnection
Не знаю...

Пароль можно передать кучей способов, допустим, формируя строку коннекта. А в её формате можно ошибиться, и сиквел такой пароль не воспримет.
5 апр 12, 14:45    [12370626]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
alexeyvg,

Строку коннекта специально не формирую, оставляю поля имя-пароль пустыми... хочу для каждого пользователя разные учетки сделать...
5 апр 12, 15:07    [12370803]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31959
JesterOK
alexeyvg,

Строку коннекта специально не формирую, оставляю поля имя-пароль пустыми... хочу для каждого пользователя разные учетки сделать...
В смысле, вы не передаёте имя-пароль и удивляетесь, почему не пускает? :-)

В общем, понятно, проблема со тороны клиента, спросите лучьше в форуме по ADO или С++ Builder, быстрее получите помощь.
5 апр 12, 15:13    [12370837]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
Если я правильно понял, из приложения без пароля, подключиться удалось.
Далее, дабы не грешить на кодировку, пароль можно сделать только из цифр.
Далее по обстановке...
PS. Вообще уже и не помню проблем соединения С++ Builder с MSSQL...
6 апр 12, 00:01    [12373614]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
Alex_Toms,

Я построил строку подключения и вызываю её при старте програмы, с заранее указанными параметрами кроме Юзер-пароль.

Потом вручную вводжу пользователя и без пароля он заходит.

Любой пароль, хоть из цифр хоть из букв не принимается.. я тоеж первое что сделал это цифровой пароль.. не хочет, в SSMS подключается нормально
6 апр 12, 12:44    [12375368]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
А на строку соединения можно взглянуть?
6 апр 12, 19:19    [12378327]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
Рабочая строка...

S ="Provider=SQLOLEDB.1;Password="+cPassWordInput+";Persist Security Info=False;User ID="+cUserName+";";
S+="Initial Catalog=MyDB;Data Source="+cServer+";Use Procedure for Prepare=1;";
S+="Auto Translate=True;Packet Size=4096;Application Name=MyProg;Workstation ID="+"+cServer+"+";";
S+="Use Encryption for Data=False;Tag with column collation when possible=False";

ADOCDB->Connected=false;
ADOCDB->ConnectionString=S;
6 апр 12, 19:39    [12378402]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
Alex_Toms
Member

Откуда: Саранск
Сообщений: 600
Не могу отредактировать предыдущее сообщение от "механической" ошибки, даю исправленную строку...

S ="Provider=SQLOLEDB.1;Password="+cPassWordInput+";Persist Security Info=False;User ID="+cUserName+";";
S+="Initial Catalog=MyDB;Data Source="+cServer+";Use Procedure for Prepare=1;";
S+="Auto Translate=True;Packet Size=4096;Application Name=MyProg;Workstation ID="+cServer+";";
S+="Use Encryption for Data=False;Tag with column collation when possible=False";
6 апр 12, 21:35    [12378847]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
Alex_Toms,

Вот моё, сейчас попробую вашу строку:

AnsiString DS=PromptDataSource
(
reinterpret_cast<unsigned int>(Handle),"Persist Security Info=False;
Integrated Security=SSPI;
Provider=SQLOLEDB;
Data Source=SUPERSERVER\\SQLEXPRESS"
);
10 апр 12, 14:43    [12393818]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
_ч_
Member

Откуда:
Сообщений: 1446
JesterOK,

Посмотрите в серверных логах State этой ошибки, а затем поищите в гугле, например:

http://sql-articles.com/articles/troubleshooting/troubleshooting-login-failed-error-18456/

И еще, попробуйте во вкладке General у пользователя убрать галочку из поля Enforce password policy
10 апр 12, 14:57    [12393952]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
_ч_
Member

Откуда:
Сообщений: 1446
JesterOK,

У вас же Error: 18456, если я правильно понял?
10 апр 12, 14:58    [12393956]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
Alex_Toms,

Спасибо Вам огромное, все подключилось..
Где можно посмотреть русскоязычное описание компонентов всех компонентов билдера , чтоб в будущем не было таких проблем ? ?

Если есть еще такие как я , то прилагаю разжеванный код:

На событие
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ADOConnection1->Connected=false;
AnsiString cPassWordInput = "123456";
AnsiString cUserName = "qwerty";
AnsiString cServer = "SUPERSERVER\\SQLEXPRESS";
AnsiString S = "Provider=SQLOLEDB.1;Password="+cPassWordInput+";Persist Security Info=False;User ID="+cUserName+";";
S+="Initial Catalog=testing;Data Source="+cServer+";Use Procedure for Prepare=1;";
S+="Auto Translate=True;Packet Size=4096;Application Name=MyProg;Workstation ID="+cServer+";";
S+="Use Encryption for Data=False;Tag with column collation when possible=False";

ADOConnection1->ConnectionString=S;
ADOConnection1->Connected=true;
            ADOTable1->Active=true;
            ADOTable2->Active=true;
            ADOTable3->Active=true;
}


В будущем переменные cPassWordInput, cUserName, cServer будут вводиться в окошке запроса логина и пароля.

Еще раз спасибо пользователю Alex_Toms за оказанную помощь.
10 апр 12, 15:11    [12394072]     Ответить | Цитировать Сообщить модератору
 Re: С++ Builder + MSSQL2008R2  [new]
JesterOK
Member

Откуда: Екатеринбург
Сообщений: 75
_ч_,

Да помоему, :

Ошибка входа пользователя "qwerty". Причина: пароль не соответствует переданному имени входа. [КЛИЕНТ: <local machine>]
18456

Проблема решилась расширенной конфигурацией строки подключения, видимо всему виной неизветсные мне параметры, может ктоот обьяснит их значение ? ?

  • Use Procedure for Prepare=1
  • Persist Security Info=False
  • Auto Translate=True
  • Use Encryption for Data=False
  • Tag with column collation when possible=False
  • 10 апр 12, 15:21    [12394177]     Ответить | Цитировать Сообщить модератору
     Re: С++ Builder + MSSQL2008R2  [new]
    Alex_Toms
    Member

    Откуда: Саранск
    Сообщений: 600
    То, что удалось подключиться, это хорошо, одной проблемой меньше...
    10 апр 12, 17:59    [12395440]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить