ADODB Connection failed in Windows 7
От: Sarevok  
Дата: 17.09.14 09:30
Оценка:
Всем привет.
Я не знаток ActiveX и VB, но мне пришлось переносить одну программу с Windows XP на Windows 7.
Программа написана на Visual Basic 6, она коннектится к удаленной базе данных (MS Access) с помощью ADODB: используется msado27.tlb
Dim conX As New ADODB.Connection
conX.Open conSQL 'in this line I got error "-2147217843:Login failed for user "Test""

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

При попытке открыть коннект я получаю ошибку: "-2147217843:Login failed for user "Test"
Ошибку я получаю только на Windows 7! На Win XP все отлично. Все данные для логина, вообще все данные, все строки и поведение на обоих платформах одинаковы ! До момента conX.Open conSQL

В чем может быть проблема? Я пока не могу найти вменяемого объяснения. Собирал я приложение на Windows XP. Сейчас пробую собрать на Windows 7, но есть сомнения, что это поможет. Запускал под учеткой администратора (не run as.. ). Стоит Service Pack 1.
Надеюсь, что кто-нибудь мне подскажет хотя бы куда копать.
Заранее спасибо.
adodb vb6 windows 7 connection
Re: ADODB Connection failed in Windows 7
От: dmitry_npi Россия  
Дата: 17.09.14 10:33
Оценка:
Здравствуйте, Sarevok, Вы писали:

S>Всем привет.

S>Я не знаток ActiveX и VB, но мне пришлось переносить одну программу с Windows XP на Windows 7.
S>Программа написана на Visual Basic 6, она коннектится к удаленной базе данных (MS Access) с помощью ADODB: используется msado27.tlb
S>
S>Dim conX As New ADODB.Connection
S>conX.Open conSQL 'in this line I got error "-2147217843:Login failed for user "Test""
S>

S> conSQL это тоже ADODB.Connection и он инициализируется и используется где-то ранее (используется без проблем и видимых ошибок).

S>При попытке открыть коннект я получаю ошибку: "-2147217843:Login failed for user "Test"

S>Ошибку я получаю только на Windows 7! На Win XP все отлично. Все данные для логина, вообще все данные, все строки и поведение на обоих платформах одинаковы ! До момента conX.Open conSQL

S>В чем может быть проблема? Я пока не могу найти вменяемого объяснения. Собирал я приложение на Windows XP. Сейчас пробую собрать на Windows 7, но есть сомнения, что это поможет. Запускал под учеткой администратора (не run as.. ). Стоит Service Pack 1.

S>Надеюсь, что кто-нибудь мне подскажет хотя бы куда копать.
S>Заранее спасибо.

Это известная багофича. В Windows 7 SP1, не знаю, случайно или намеренно, поменяли GUIDы компонентов ADO . Получается, вы скомпилировали программу в расчете на одни номера, а на семерке за этими номерами — фактически другие компоненты. Самое простое решение — пересобрать под семеркой. (Но тогда, подозреваю, обратно на XP работать не будет). Кажется, по этому случаю выпускали фикс, так что попробуйте обновить вашу семерку.

Рекомендую также погуглить, проблема известна. Например:
http://support.microsoft.com/kb/2640696/en-us
http://www.codeproject.com/Articles/225491/Your-ADO-is-broken
http://blogs.msdn.com/b/psssql/archive/2011/10/03/yes-we-made-a-mistake-and-are-finally-going-to-fix-it.aspx
Атмосферная музыка — www.aventuel.net
Re[2]: ADODB Connection failed in Windows 7
От: Vi2 Удмуртия http://www.adem.ru
Дата: 17.09.14 11:09
Оценка: 1 (1)
Здравствуйте, dmitry_npi, Вы писали:

_>Это известная багофича. В Windows 7 SP1, не знаю, случайно или намеренно, поменяли GUIDы компонентов ADO . Получается, вы скомпилировали программу в расчете на одни номера, а на семерке за этими номерами — фактически другие компоненты. Самое простое решение — пересобрать под семеркой. (Но тогда, подозреваю, обратно на XP работать не будет). Кажется, по этому случаю выпускали фикс, так что попробуйте обновить вашу семерку.


Использованные GUID обратно не возвращаются, т.е. за ними никогда не будут и не могут стоять другие компоненты.

_>Рекомендую также погуглить, проблема известна. Например:

_>http://support.microsoft.com/kb/2640696/en-us
_>http://www.codeproject.com/Articles/225491/Your-ADO-is-broken
_>http://blogs.msdn.com/b/psssql/archive/2011/10/03/yes-we-made-a-mistake-and-are-finally-going-to-fix-it.aspx

И вот твои ссылки о том, что скомпилированный код на Win7SP1 не будут запускаться на устаревших ОСях.

//
// MessageId: DB_SEC_E_AUTH_FAILED
//
// MessageText:
//
// Authentication failed.
//
#define DB_SEC_E_AUTH_FAILED ((HRESULT)0x80040E4DL)

Я с базами данных не работал, но может этот код подвигнет на поиски верного решения. Ну и со своей стороны замечу, что в Win7 проверка прав доступа осуществляется строже чем на XP.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: ADODB Connection failed in Windows 7
От: Sarevok  
Дата: 17.09.14 18:14
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте, Sarevok, Вы писали:


S>>Всем привет.

S>>Я не знаток ActiveX и VB, но мне пришлось переносить одну программу с Windows XP на Windows 7.
S>>Программа написана на Visual Basic 6, она коннектится к удаленной базе данных (MS Access) с помощью ADODB: используется msado27.tlb
S>>
S>>Dim conX As New ADODB.Connection
S>>conX.Open conSQL 'in this line I got error "-2147217843:Login failed for user "Test""
S>>

S>> conSQL это тоже ADODB.Connection и он инициализируется и используется где-то ранее (используется без проблем и видимых ошибок).

S>>При попытке открыть коннект я получаю ошибку: "-2147217843:Login failed for user "Test"

S>>Ошибку я получаю только на Windows 7! На Win XP все отлично. Все данные для логина, вообще все данные, все строки и поведение на обоих платформах одинаковы ! До момента conX.Open conSQL

S>>В чем может быть проблема? Я пока не могу найти вменяемого объяснения. Собирал я приложение на Windows XP. Сейчас пробую собрать на Windows 7, но есть сомнения, что это поможет. Запускал под учеткой администратора (не run as.. ). Стоит Service Pack 1.

S>>Надеюсь, что кто-нибудь мне подскажет хотя бы куда копать.
S>>Заранее спасибо.

_>Это известная багофича. В Windows 7 SP1, не знаю, случайно или намеренно, поменяли GUIDы компонентов ADO . Получается, вы скомпилировали программу в расчете на одни номера, а на семерке за этими номерами — фактически другие компоненты. Самое простое решение — пересобрать под семеркой. (Но тогда, подозреваю, обратно на XP работать не будет). Кажется, по этому случаю выпускали фикс, так что попробуйте обновить вашу семерку.


_>Рекомендую также погуглить, проблема известна. Например:

_>http://support.microsoft.com/kb/2640696/en-us
_>http://www.codeproject.com/Articles/225491/Your-ADO-is-broken
_>http://blogs.msdn.com/b/psssql/archive/2011/10/03/yes-we-made-a-mistake-and-are-finally-going-to-fix-it.aspx

Пересобрал приложение и его библиотеки по Windows 7. К сожалению проблема не исчезла и даже никак не изменилось поведение. Попробовал версии msado2.6 — 2.8. Грустно Если есть какие идеи — пишите, буду рад
Re: ADODB Connection failed in Windows 7
От: UA Украина  
Дата: 18.09.14 14:03
Оценка:
Может проблема в том что база удаленная, а у тебя с правами доступа что то не так под Windows 7
Re: ADODB Connection failed in Windows 7
От: bnk СССР http://unmanagedvisio.com/
Дата: 18.09.14 22:20
Оценка: 2 (2) +1
Здравствуйте, Sarevok, Вы писали:

S>
S>conX.Open conSQL 'in this line I got error "-2147217843:Login failed for user "Test""
S>

S> conSQL это тоже ADODB.Connection и он инициализируется и используется где-то ранее (используется без проблем и видимых ошибок).

стоп-стоп. Connection.Open же строчку принимает в качестве параметра?
т.е. второй conX.Open просто берет connectionString первого (проперти по умолчанию). Пароль перестал возвращаться в параметрах.

Может тебе тупо username/password передать, ы?
ConX.Open conSQL, username, password


Или добавь в свой исходный ConnectionString
"Persist Security Info=true"

здесь объяснение — дефолтное значение для "Persist Security Info" было установлено в False для улучшения безопасности (раньше было True)
Отредактировано 18.09.2014 22:31 bnk . Предыдущая версия .
Re[2]: ADODB Connection failed in Windows 7
От: Sarevok  
Дата: 19.09.14 16:21
Оценка:
Здравствуйте, bnk, Вы писали:

bnk>Здравствуйте, Sarevok, Вы писали:


S>>
S>>conX.Open conSQL 'in this line I got error "-2147217843:Login failed for user "Test""
S>>

S>> conSQL это тоже ADODB.Connection и он инициализируется и используется где-то ранее (используется без проблем и видимых ошибок).

bnk>стоп-стоп. Connection.Open же строчку принимает в качестве параметра?

bnk>т.е. второй conX.Open просто берет connectionString первого (проперти по умолчанию). Пароль перестал возвращаться в параметрах.

bnk>Может тебе тупо username/password передать, ы?

bnk>
bnk>ConX.Open conSQL, username, password
bnk>


bnk>Или добавь в свой исходный ConnectionString

bnk>"Persist Security Info=true"

bnk>здесь объяснение — дефолтное значение для "Persist Security Info" было установлено в False для улучшения безопасности (раньше было True)


Совершенно верно, т.к. я не особо знаком со всем этим, то долго не мог понять причину.
После .Open у коннекта в свойствах и в Connection String пропадает пароль! И соответственно второй коннект, который берет данные первого уже не может приконнектится.
Хоть бы блин было это где-то в явном виде написано
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.