Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Ошибка подключения к SQL-серверу


Автор: Shadow_1512 3.12.2004, 18:36
Собственно говоря есть ActiveState Перл 5.22 вроде бы. К нему с activestate выкачаны DBI, DBD:ODBC, уставлено без проблем особых.
В конфиге строка:

$DB_PROP = "DBI:ODBC:driver={SQL Server};Server=ascod5;database=ford;uid=slava;pwd=sa;";

Сервер пишет в ответ:
Указанное приложение CGI не возвратило полный набор заголовков HTTP. Не возвращены заголовки:

DBI->connect failed: [Microsoft][ODBC Driver Manager] Invalid string or buffer length (SQL-S1090) (DBD: db_login/SQLConnect err=-1)

Что примечательно - на другом компе, с возможно другой версией перла и другими версиями ODBC все работало без проблем.

Сейчас еще сам порою, но не уверен, что откопаю причину, Перлом занимаюсь поневолеSmile. Хелп!

Автор: korob2001 4.12.2004, 04:15
Помоему проблема дествительно в версии Perl, если с более новой версие всё работает. Установи более свежую, но не меньше чем Perl 5.6, ранние версии не поддерживали ссылок ну и конечно же ООП.

Автор: Shadow_1512 4.12.2004, 15:35
Цитата(korob2001 @ 4.12.2004, 04:15)
Помоему проблема дествительно в версии Perl, если с более новой версие всё работает. Установи более свежую, но не меньше чем Perl 5.6, ранние версии не поддерживали ссылок ну и конечно же ООП.

Спасибо за совет, проект не мой, знаю только то, что вроде как использовался там старенький Перл и ранее, но вроде все работало. Человек не был озабочен ООПsmile.
Кстати, может кто знает, вот например в ActiveState Perl 5.8 ppm пытается лезть в свой репозитарий, чтобы установить пакет, причем лезет на ppm.activestate.com...А можно лишить ее этой замечательной функциональности, потому как все необходимые пакеты у меня есть и я хочу, чтобы ppm все установило из локальных файлов...

Автор: korob2001 4.12.2004, 19:13
Цитата

Человек не был озабочен ООП

Модуль DBI, объектно ориентированный и если чел его использовал, значит всё-таки был озабочен ООП.
Цитата

Кстати, может кто знает, вот например в ActiveState Perl 5.8 ppm пытается лезть в свой репозитарий, чтобы установить пакет, причем лезет на ppm.activestate.com...А можно лишить ее этой замечательной функциональности, потому как все необходимые пакеты у меня есть и я хочу, чтобы ppm все установило из локальных файлов...

Сначала запусти PPM, затем вводи следующую команду:
ppm>install путь_к_файлу_ppd

Например если файл ppd лежит на диске C:\, в каталоге \DBI, то команда будет выглядеть так:
ppm>install C:\DBI\DBI.ppd

Удачи.

Автор: Shadow_1512 6.12.2004, 14:10
Цитата(korob2001 @ 4.12.2004, 19:13)
Цитата

Человек не был озабочен ООП

Модуль DBI, объектно ориентированный и если чел его использовал, значит всё-таки был озабочен ООП.
Цитата

Кстати, может кто знает, вот например в ActiveState Perl 5.8 ppm пытается лезть в свой репозитарий, чтобы установить пакет, причем лезет на ppm.activestate.com...А можно лишить ее этой замечательной функциональности, потому как все необходимые пакеты у меня есть и я хочу, чтобы ppm все установило из локальных файлов...

Сначала запусти PPM, затем вводи следующую команду:
ppm>install путь_к_файлу_ppd

Например если файл ppd лежит на диске C:\, в каталоге \DBI, то команда будет выглядеть так:
ppm>install C:\DBI\DBI.ppd

Удачи.

Спасибо! А то работая с Перлом других более ранних версий сформировалась иная привычкаsmile
Что касается человека, не озабоченного ООП, то имелось в виду, что архитектура разрабатываемых им приложений ни в коем роде не ориентирована была на ООП, а то, что использовались отдельные классы, это ведь еще не значит, что весь проект написан в рамках ООПsmile
Еще раз спасибоsmile

Автор: Shadow_1512 6.12.2004, 14:50
Так, ну теперь проблему более или менее удалось решить, но теперь ошибка иная:
DBI connect('driver={SQL Server};Server=ascod5;database=ford;uid=slava_u_s;pwd=sa;','',...) failed:
: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'slava_u_s'. Reason: Not associated with a trusted SQL Server connection. (SQL-28000)(DBD: db_login/SQLConnect err=-1)

Что пишет - понимая, где исправить - нет.
Сервер работает, коннект есть, юзер такой с таким паролем есть на коннект.
Есть мысли?

Автор: korob2001 6.12.2004, 16:12
Посмотреть на тот участок кода, где ты пытаешься подконектиться, можно? Логин, пароль естественно можешь изменить.

Автор: Shadow_1512 6.12.2004, 16:29
Цитата(korob2001 @ 6.12.2004, 16:12)
Посмотреть на тот участок кода, где ты пытаешься подконектиться, можно? Логин, пароль естественно можешь изменить.

$DB_PROP = "DBI:ODBC:driver={SQL Server};Server=ascod5;database=ford;uid=slava_u_s;pwd=sa;";
Эта строка в конфиге....
$dbh = DBI->connect($DB_PROP); - а это, соответственно, то место, где происходит коннект непосредственноsmile
у меня больше ощущение, что здесь что-то не так уже с настройками SQL Server........?

Автор: Phoinix 7.12.2004, 08:21
Shadow_1512

http://search.cpan.org/~jurl/DBD-ODBC-1.13/ODBC.pm

ODBC - на то и отдельный интерфейс, что бы его настраивать самостоятельно.

Цитата(Shadow_1512 @ 3.12.2004, 18:36)
Что примечательно - на другом компе, с возможно другой версией перла и другими версиями ODBC все работало без проблем.


В следующий раз не вводи в заблуждение народ. Что такое: "возможно другая версия Perl" и "другие версии ODBC"? Не путайся в понятиях.

Процесс простой:
- В источниках данных ODBC заводишь новый источник, с использованием драйвера "SQL Server",в нем и указываешь сервер, базу, пароль, логин;
- В случае необходимости ставишь на источник данных свою проверку подлинности;
- Потом после всех манипуалий с ODBC и предварительным тестированием там же, начинаешь редактировать скрипт, а именно:

$DB_PROP = "DBI:ODBC:[Название источника данных в ODBC], [пользователь для этого источника данных], [пользователь для этого источника данных]"; ...

После чего откидываешься на спинку кресла и наслаждаешься результатом... ;)

Автор: Shadow_1512 7.12.2004, 20:20
Цитата(Phoinix @ 7.12.2004, 08:21)
Shadow_1512

http://search.cpan.org/~jurl/DBD-ODBC-1.13/ODBC.pm

ODBC - на то и отдельный интерфейс, что бы его настраивать самостоятельно.

Цитата(Shadow_1512 @ 3.12.2004, 18:36)
Что примечательно - на другом компе, с возможно другой версией перла и другими версиями ODBC все работало без проблем.


В следующий раз не вводи в заблуждение народ. Что такое: "возможно другая версия Perl" и "другие версии ODBC"? Не путайся в понятиях.

Процесс простой:
- В источниках данных ODBC заводишь новый источник, с использованием драйвера "SQL Server",в нем и указываешь сервер, базу, пароль, логин;
- В случае необходимости ставишь на источник данных свою проверку подлинности;
- Потом после всех манипуалий с ODBC и предварительным тестированием там же, начинаешь редактировать скрипт, а именно:

$DB_PROP = "DBI:ODBC:[Название источника данных в ODBC], [пользователь для этого источника данных], [пользователь для этого источника данных]"; ...

После чего откидываешься на спинку кресла и наслаждаешься результатом... ;)

Спасибо за информацию, последняя ошибка была вызвана некорректной настройкой SQL сервера 2000 уже, решили своими методами. А что касается других версий Перл и ODBC, ну вот характерно, что на версии 5.2.2 строка коннекции вообще была непонятна для DBI и ответом было что-то про неверную длину строки коннекции. Стоило поставить 5.8.х с соответствующими пакетами, сразу вопросы про длину ушли сами собой, появились другие, которые уже действительно указывали на ошибки настроек или программы, а не возникшие из-за разногласий в версиях.

Спасибо за советы!

Автор: korob2001 8.12.2004, 09:21
Цитата

В следующий раз не вводи в заблуждение народ. Что такое: "возможно другая версия Perl" и "другие версии ODBC"? Не путайся в понятиях.

Зачем же так сразу о понятиях? Понятия у каждого свои, потому разговоры о них никчему хорошему не приведут, потому как если понятия людей хоть в чём-то не сходятся, начинается поножовщина. Короче, конец у таких раскладов, как правило, трагический. Потому, давай не будем о понятиях. К томуже, человек пытался объяснить проблему как мог и описал что знал, это видно из того, что он написал, в вопросе, не одну и не две строки, типа:
"Help, не могу запустить скрипт".
Ребята, давайте жить дружно. Жизнь и так подсовывает подвохи на каждом шагу и мы не должны пытаться унизить друг друга, только из за того что ты знаешь больше по данному вопросу.

Phoinix, только пойми меня правильно, я ничего не имею против тебя. Это я о том, что нужно быть чуточку снесходительнее, тем более когда видно, что человек перед тем как написать сюда, хоть что-то пытался сделать сам, такие люди заслуживают уважения.

Удачи.

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