Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

ADO connection, D7, MS SQL2000   Найти похожие ветки 

 
elena_m   (2003-05-29 17:50) [0]

Клиентское приложение инсталлируется на машине, на которой стоит MSSQL2000 sp3. Файл *.udl находится в жестко прописанной папке, напр. С:\DBConnect. TestConnection выполняется, при запуске клиентского приложения выдается ошибка "не найден путь" и т.д.
Может быть при инсталляции не добавлена нужная библиотека?


 
bushmen ©   (2003-05-29 17:53) [1]

А можно сначала узнать постановку задачи. И что за файл *.udl ?


 
MOA ©   (2003-05-29 18:06) [2]

Либо поместите его в
Program Files\Common Files\System\Ole DB\Data Links\
(100% нажёжно), или в приложении (проекте) назовите его (руками!) как
.\ваш-udl-файл - если он в каталоге приложения, или как
Полный путь к файлу.
Если пользоваться визардом Delphi, он режет путь (если в текущем каталоге), так что нужно именно руками.
Удачи!


 
elena_m   (2003-05-29 18:31) [3]

Дело в том, что это был мой первый шаг. У заказчиков нет каталога Data Links в папке OLE DB. Хотя установлено все тоже самое W2000, MSSQL 2000, кроме Delphi. Поэтому решила сделать корневой каталог на диске С. Путь в TADOConnection в Design Time виден правильно.


 
MOA ©   (2003-05-29 18:39) [4]

>заказчиков нет каталога Data Links в папке OLE DB
Ну так создайте его.
Удачи!


 
sniknik ©   (2003-05-29 18:44) [5]

руками при старте для уверенности вместе с полным путем указывай
ADOConnection.ConnectionString:= "FILE NAME=C:\DBConnect\udl.udl"; (то что там визард повставляет еще вопрос..)
а лутше (мне кажется) держать его рядом Exe файлом, но все равно указывать полный путь даже если папка текущая.


 
elena_m ©   (2003-05-29 18:53) [6]

Огромное всем спасибо.
>MOA Ну так создайте его.
Создавали. Не помогает. У меня 2 системы на компьютере. W2000 стоит на диске D\ и, соответственно, ProgramFiles там же. Может это где-то фиксировалось?
Я попробую действительно прописать руками. Результат получу уже только завтра.


 
elena_m ©   (2003-05-30 13:12) [7]

После того как прописала руками в конкретную папку, завалилось даже у маня на машине. Я так понимаю, пошел конфликт с свойством провайдер. В хелпе написано, что это свойство выставляется автоматически при задании СоnnectionString. Но ничего из этого не вышло. Может все-таки нехватка каких-то библиотек?


 
MOA ©   (2003-05-30 13:22) [8]

Попробуйте в момент, когда ADOConnection уже с нужными параметрами, но ещё не астивен, посмотреть в отладчике на свойства соединения.
А на что жалуется? Что за ошибка?


 
sniknik ©   (2003-05-30 13:40) [9]

ну как я понимаю тогда у тебя этот udl не настроен, а когда было без пути ловило какойто другой настроеный (с тем же именем, сделай поиск в скольких местах лежит такойже?).
или к примеру в udl настройки к одному провайдеру(с одним логином/паролем) а на другой машине тот же самый будет некоректный, надо перенастраивать.

у меня прекрасно работает вариант типа
FILE NAME=D:\Program Files\Common Files\System\Ole DB\Data Links\DBDEMOS.udl
и когда переписываеш удльку в другое место тоже
FILE NAME=D:\DBDEMOS.udl

может со строкой напутала? путь неправильно задала? и т.д. номер/сообщение ошибки какое?


 
WarLord ©   (2003-05-30 13:45) [10]


> у меня прекрасно работает вариант типа
> FILE NAME=D:\Program Files\Common Files\System\Ole DB\Data
> Links\DBDEMOS.udl
> и когда переписываеш удльку в другое место тоже
> FILE NAME=D:\DBDEMOS.udl

чудес не бывает :)


 
elena_m ©   (2003-05-30 14:23) [11]

Файлов с одним и тем же именем, я стараюсь не разбрасывать.
Если поставить совершенно новый TADOConnection со стандартными настройками и перед актив = тру прописать путь к файлу udl - выдается ошибка Microsoft [ODBC Driver Manager] Data source name not found and not default driver specified.
Если в св. провайдер я выберу SQL OLE DB - тоже не подходит. В файле у меня идет настройка именно на этот драйвер, по умолчанию стоит MSDASQL
Если выбираю файл в браудере - все работает, но только на моей машине. Может это неправильно, что я пользуюсь SQL OLE DB &


 
WarLord ©   (2003-05-30 14:33) [12]


> elena_m ©

Попробуй вместо UDL-файла использовать строку типа
ADOConnection1.ConnectionString:="Provider=SQLOLEDB.1;Password="+Password+";Persist Security Info=True;"+
"User ID="+UName+";Initial Catalog="+BaseName+";Data Source="+ServerName;


 
sniknik ©   (2003-05-30 14:42) [13]

elena_m © (30.05.03 14:23)
судя по ошибке конект через ODBC. и ненаходится ODBC алиас...
т.е. проблема с настройкой UDL файла. на "провайдер" не смотри он поменяется при изменении строки коннекта.


 
elena_m ©   (2003-05-31 00:22) [14]

Получился такой результат. Если прописываю строку в программе, как советовал WarLord. Все замечательно и работает. Если же эту строку один к одному прописываю в файл udl и руками указываю его местонахождение - ругается Microsoft [ODBC Driver Manager] Data source name not found and not default driver specified.


 
МДа..   (2003-05-31 01:20) [15]


> Если же эту строку один к одному прописываю в файл

Вопрос однако. Если открытьь udl в блокноте, не видно два первых байта файла, надо попробовать создать его при помощи CreateUdlFile(по-моему, так называется). Прочитать строку соединения из файла udl можно при помощи ReadSectionValues("oledb",...). Рекомендую обратить внимание на ф. PromptDataSource, при помощи которой можно создать этот файл при работе проги, и иже с нею, разобраться поможет.
Sheveli izvilinoy.)


 
sniknik ©   (2003-05-31 01:21) [16]

WarLord © (30.05.03 14:33)
Provider=SQL OLEDB...
elena_m © (31.05.03 00:22)
[ ODBC Driver Manager] Data source name not found and not default driver specified
т.е. строка выглядит примерно так Provider=MSDASQL.1;Persist Security Info=False;Data Source=LocalServer

а говориш один к одному. не видиш разницу? (провайдер другой, не говоря об остальном) в том udl который подключается конект через ODBC, а уже в нем не настроен алиас (явно, если зайти в источники данных ODBC и сделать проверку этому DSN результат будет тотже).
в строке с OLE DB алиасов нет все в строке и прописывается (и работает).

в общем резюме. или всетаки строка не та или берет из другого udl.

кстати как ты делаеш udl файл? не в нотепаде случайно строку от WarLord © загоняеш? (натолкнуло "Если же эту строку один к одному прописываю в файл udl", ну явно в редакторе прописываеш)


 
sniknik ©   (2003-05-31 01:25) [17]

если в редакторе то это неправильно. делай так, создаеш пустой файл, обзываеш его какнибудь.udl и в проводнике двойной клик на нем мышью или ентер. дальше настраиваеш, а не прописываеш.


 
elena_m ©   (2003-05-31 08:58) [18]

>sniknik
Я так и делаю, кликаю правой кнопкой и настраиваю.
Строку перегоняю в блокноте и настраиваю. Мне самой непонятно причем тут ODBC
Я пробовала и ODBC драйверы - ошибка та же. Такое впечатление, что ей вообще все равно, что там написано. Я, конечно, могу зашить жестко, но у Заказчика другое имя сервера и все время перетряхивать инстолляцию не хочется


 
elena_m ©   (2003-05-31 12:19) [19]

Я попробовала настраивать коннект при помощи ф-ии из ADOEditCon, при помощи диалового окна.
Если настраиваю строку коннекта все ОК. Если настраиваю файл, то появляется ошибка: Login faild for user... REason Not Associated with a trusted SQL Connection
Это происходит и при коннекте как пользователь домена и по паролю.
Если я правильно поняла это надо проверить Security на самом сервере, видимо пользователь неправильно настроен. Почему-то ручками это не ловилось и дельфи не ругалась и при тех же настройках тест коннекшн проходил.


 
sniknik ©   (2003-05-31 14:28) [20]

elena_m © (31.05.03 08:58)
> Я так и делаю, кликаю правой кнопкой и настраиваю.
> Строку перегоняю в блокноте и настраиваю.

забудь про блокнот в случае с udl, и не делай так никогда, это не текстовый файл, там строка в юникоде (widestring с 2 байтами на символ), в блокноте правильный сама никогда не напишеш, даже имея абсолютно рабочие строки подключения.
делать надо так --> sniknik © (31.05.03 01:25)

> и настраиваю
если настраиваеш то видела там в настройке на панели connection кнопку Test Connection? по этой кнопке что говорит? соеденение валидное или нет?
(я так подозреваю, если строка в блокноте прописана, то ты и в настройку не попадеш будет говорить что это не udl файл)

тут и вариантов то не осталось (по тому как провайдер ODBC хатя уверяеш что записываеш OLEDB)
или udl открываеш не тот или неправильно его сделала.

> Login faild for user... REason Not Associated with a trusted SQL Connection
обычно при попытке подключится к серверу по виндовому паролю "Use windows NT Integrated security" а компьютер (вот облом) не в домене и даже на сервере юзер не прописан, или другие администраторские заморочки.

а вобще уже пошло перетирание одного и тогоже причем голословное.
ложи сюда код, как делаеш, где ошибка возникает и внутренности своего udl-я приведи хоть приблизительно посмотреть, что дает кнопка "Test Connection". короче описывай ситуацию.
без детального описания довольствуйся тем что есть (до более глубокого вникания), потому как я лично в этом случае умываю руки. (может конечно кто и угадает, но обычно не угадывают а говорят что телепат в отпуске)


 
elena_m ©   (2003-05-31 16:05) [21]

TestConnection c cамого начала проходит и у меня, и у заказчика
И в настройку я попадаю.
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Mship;Data Source=ELENA

А ситуация все та же, ручное присвоение ConnectionString коннекта не дает, а выбор файла в брайзере объекта коннект дает только на моем компьютере


 
elena_m ©   (2003-05-31 16:13) [22]

>sniknik
Спасибо за подсказку про прописывание в домене, потому что местный сисадмин сказал, что ничего дополнительно не надо делать.


 
sniknik ©   (2003-05-31 17:32) [23]

> TestConnection c cамого начала проходит и у меня, и у заказчика
значит с этим udl должно работать, без вариантов.

> Спасибо за подсказку про прописывание в домене, потому что местный сисадмин сказал, что ничего дополнительно не надо делать.
я не говорил что это нужно делать обязятельно это просто одно из возможных. (может админ прав, даже скорее всего, сама говориш Test Connection в udl проходит. т.е. настройки сети достаточны). что действительно нужно это доверительные отношения между компом с MSSQL и рабочей станцией. и даже этого не нужно если делать идентефикацию через MSSQL (тогда должно быть прописано в безопастности "SQL Server and Windows")
в общем здесь вариантов достаточно.

p.s. так и не вижу детального описания действий. и даже то что положила udl со своей машины рабочий (Data Source= ELENA) а где нерабочий? или у клента сервер также называется? сомневаюсь.


 
elena_m ©   (2003-06-01 13:18) [24]

Всем огромное преогромное спасибо. Вопрос был действительно в правах юзера. Я сделала отладочный вариант с выведенной настройкой строки коннекта (ADOEditCon). И там ясно было сообщение, что у юзера нет прав соединения с базой. То есть до этого сообщение об ошибке не соответствовало тому что происходило на самом деле и вводило в заблуждение.


 
sniknik ©   (2003-06-01 13:43) [25]

ADOEditCon если имеется ввиду процедура EditConnectionString вызывает PromptDataSource (вернее через эту обертку системную GetInitializationString). которая равнозначна (абсолютно) с тем что вызывает сиcтема для настройки udl.
а значит и ошибки должны быть одинаковы (ну какая разница из какого места процедуру вызывать? если конечно параметры одинаковы).

из чего заключаю что в настройку udl ты так и не попала... иначе не пришлось бы писать отладочный вариант с ADOEditCon. и сравниваеш не те ошибки.

еще раз (по другому). Пуск -> Выполнить -> Обзор(Тип файлов - все) выбираеш udl файл -> Открыть -> Ok.
(мошеш конечно сказать что это все тебе известно(и валить ошибки на систему типа я именно так и делала но..) но оговорки про блокнот/правую кнопку мыши и вобше стиль, заставляют меня думать что это не так)


 
elena_m ©   (2003-06-01 18:25) [26]

>sniknik
Этот злосчастный блокнот использовался в самом начале 1 раз, чтобы перекопировать строку, созданную . Потом уже я заходила через open удл файла. Валить я буду только на свою некомпетентность. Моя беда в том, что я первый раз работаю через ADO и с MSSQL2000 и не администрю NT. До этого все мои проекты выполнялись под Interbase сначала BDE, потом IBX, DB2 через DBExpress - в этом случае был опытный админ и я с этим вообще дела не имела. Он сам создавал базу из принесенного скрипта и юзеров.


 
sniknik ©   (2003-06-01 19:53) [27]

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

и в последнем посте описание ничего не говорит, даже если базу создал посторонний коннект к ней протестенный в udl должен работать если именно она (эта udl) подключена, в 99.98% (0.02% оставляем на НЛО). а ты говорила что "TestConnection c cамого начала проходит и у меня, и у заказчика", и слово open только счас мелькнуло мне почемуто казалось "Открыть с помощью"->и.т.д. (имею право предположить, раз конкретно не сказано а оно почемуто не работает, хотя по уверениям все сделано правильно. а на что тогда еще думать? на НЛО?)

мне вобщемто пофигу. но ктото сказал что ответ на 50%(или больше?) состоит из грамотного вопроса(почитай вот интересно http://www.delphimaster.ru/vopros/index.html). иначе поиск ответа превращается ... ну в общем видно во что.

p.s. лично против тебя ничего не имею, но общатся с тобой трудновато. недоговоренностей много используеш. типа это всем известно это по умолчанию, а если у меня другие умолчания?.



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.022 c
1-84268
Ajax
2003-06-13 21:10
2003.06.26
Интересный глюк...


7-84809
GIMLI
2003-04-16 19:32
2003.06.26
Список дисков


4-84815
sergey2
2003-04-22 13:14
2003.06.26
Как создать кнопку в заголовке окна?


1-84283
Leon_M@ni@k
2003-06-14 14:31
2003.06.26
TStringGrid - срочно нужна консультация с автопереносом....


14-84698
Vlad Oshin
2003-06-05 11:15
2003.06.26
А помните? ..И ему было только 16 лет!?!