win 2000, xp и ADO
есть комп с 2000 виндой. там стоит мой builder и компилится программа. на всех компах с 2k откомпиленная программа идет на ура. на компах с XP - не идет. пишет
[DBNETLIB][ConnectionOpen (Invalid Instance()).]Недопустимое подключение.
подключаюсь через ADOConection напрямую к SQL server.
единственный найденный вариант - создавать ODBC драйвер и подключаться к нему. тогда всё работает. но это не выход. подскажите в чем может быть трабл.
вот бьюсь над проблемой:
есть комп с 2000 виндой. там стоит мой builder и компилится программа. на всех компах с 2k откомпиленная программа идет на ура. на компах с XP - не идет. пишет
[DBNETLIB][ConnectionOpen (Invalid Instance()).]Недопустимое подключение.
подключаюсь через ADOConection напрямую к SQL server.
единственный найденный вариант - создавать ODBC драйвер и подключаться к нему. тогда всё работает. но это не выход. подскажите в чем может быть трабл.
Может, MDAC посвежее поставить?
http://msdn.microsoft.com/data/downloads/updates/default.aspx#MDAC
т.е. microsoft data down fault.
Правильно характеризует... :D
на xp работает. на 2k - нет! говорит что не видит сервер, хотя мне кажется что гонит и дело в драйверах данных. или чем-то еще.
доставил mdac-patchi и опять не помогло.
И всё-таки, какой версии MDAC?
И, надеюсь, ServicePack4 на win2k нахлобучен?
патчи тоже поставил. на 2k и на xp - нахлобучены последние сервис-паки. по поводу последних обновлений не уверен.
В cliconfg включен TCP/IP (Если в домене, то Named Pipes)? При создании DataSource через odbcad32 автоматом устанавливается TCP/IP (порт динамически)
а что значит cliconfig? соединени с сервером идет через tcp/ip по динамическому порту. на самом деле порт вполне определенный, счаз просто номер из гловы вылетел.
а что значит cliconfig?
cliconfg.exe - утилита настройки MSSQLServer клиента. Идет с виндами, лежит в System32. По умолчанию порт - 1433
cliconfg.exe - утилита настройки MSSQLServer клиента. Идет с виндами, лежит в System32. По умолчанию порт - 1433
насколько я понял "программа сетевого клиента" необходима для любого сетевого подключения. вообщем и на компе компилирующем прогу (winxp) и на компе тестирующем прогу (win2k) в cliconfg.exe включен по умолчанию tcp\ip. но толку никакого. пишет общий сбой сети.
вопрос остается нерешенным и открытым :x
Какая версия сервера MSSQL? Версия билдера+updates (втч на ADOExpress)? Кусок кода, если решение все еще не появилось.
Мало информации. Подобное уже где-то видел, но решения не помню. Нужно:
Какая версия сервера MSSQL? Версия билдера+updates (втч на ADOExpress)? Кусок кода, если решение все еще не появилось.
Посмотри вот здесь: http://forums.progers.ru/index.php?showtopic=101 Может натолкнет на мысль. А вообще можно взять mdac от 2000 и сунуть в XP, но мне такое решение не очень нравится.
2AlexandrVSmirno: на мысли натолкнуло, только не по теме они
А если задать вместо имени Instance (Server Name) IP Address?
2AlexandrVSmirno: на мысли натолкнуло, только не по теме они
Там все по теме. При стандартной установке Windows2000 sp4 версия msdac 2.7, в XP 2.8. Совместимость снизу вверх есть. Это проверено. А чудеса начинаются при неаккуратно написаном коде.
Т.е. нужно действительно смотреть код это раз. И проверить правильность установки XP это два.
И есть совсем тупое решение - это установка Enterprise Manager.
Кстати не исключено, что нужно использовать не tcp\ip а pipe.
Да, действительно. Однако, ошибки происходят при подключении к серверу -
Согласен, в некоторой степени допускается, что источник ошибки где-то в начале цепочки "ADOConnection->ConnectionString - ADOExpess - MDAC -[list=1] - <API клиента> - <DBNETLIB (...): настройки протоколов в cliconfg> - <настройки сетевых протоколов в ОС (как клиента, так и сервера/домена)>"
Для того, чтобы найти ошибку нужно:
1. ADOConnection->ConnectionString
2. Версия Builder/ADOExpress+Updates
3. Версия MDAC
4. Версия ОС
5. Настройки клиента
6. Активные протоколы в ОС
7. Ранг сети
8. Версия сервера (если она совсем мохнатая)
Вроде ничего не пропустил.
Да, действительно. Однако, ошибки происходят при подключении к серверу -
Согласен, в некоторой степени допускается, что источник ошибки где-то в начале цепочки "ADOConnection->ConnectionString - ADOExpess - MDAC -[list=1] - <API клиента> - <DBNETLIB (...): настройки протоколов в cliconfg> - <настройки сетевых протоколов в ОС (как клиента, так и сервера/домена)>"
Для того, чтобы найти ошибку нужно:
1. ADOConnection->ConnectionString
2. Версия Builder/ADOExpress+Updates
3. Версия MDAC
4. Версия ОС
5. Настройки клиента
6. Активные протоколы в ОС
7. Ранг сети
8. Версия сервера (если она совсем мохнатая)
Вроде ничего не пропустил.
мужики я тока еще больше запутался. повторяю проблему в том виде до которого она дошла на данный момент.
есть сервак - win 2003 + mssql server 2000 sp3.
на нем версия библиотеки tcp/ip - 8.0.766
(это так на всякий случай)
есть комп на котором я работаю -
win xp + sp2. mdac - 2.8 версия библиотеки 8.0.341. с++ builder 6 + все главные update.
есть куча компов на которых должен работать клинент. на компах с win xp - всё идет.
на копах с win 2k - не идет. на них 7.0.819 (к примеру). обновлять везде - задолбаюсь :) их много.
на такой один комп ради интереса установил билдер. версия откомпиленная на таком компе идет везде под 2к но не идет под xp.
всегда спасает работа через odbc-connection, но с ним какие-то другие глюки (кажется не позволяет добавлять данные). mdac кажется и не пахнет.
Да, действительно. Однако, ошибки происходят при подключении к серверу -
Согласен, в некоторой степени допускается, что источник ошибки где-то в начале цепочки "ADOConnection->ConnectionString - ADOExpess - MDAC -[list=1] - <API клиента> - <DBNETLIB (...): настройки протоколов в cliconfg> - <настройки сетевых протоколов в ОС (как клиента, так и сервера/домена)>"
Для того, чтобы найти ошибку нужно:
1. ADOConnection->ConnectionString
2. Версия Builder/ADOExpress+Updates
3. Версия MDAC
4. Версия ОС
5. Настройки клиента
6. Активные протоколы в ОС
7. Ранг сети
8. Версия сервера (если она совсем мохнатая)
Вроде ничего не пропустил.
ранг сети без понятия.
активные протоколы - везде включаю (cliconfg) tcp/ip. сервак тоже настроен тока на него. (ну не люблю я named pipes).
odbc строка в xp -
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test02;Data Source=SOK-SQL01\SQLSERVER;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SOK-BASE04;Use Encryption for Data=False;Tag with column collation when possible=False
odbc строка в 2к -
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test02;Data Source=SOK-SQL01;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SOK-BASE03.
вполне может быть что изза того что имя сервера прописывается по разному в хр -SOK-SQL01\SQLSERVER, в 2к - SOK-SQL01.
почти наверняка дело не в коде - код банален до безумия. adoconnection стоит true.
Стоит добавить в строку коннекта Mode=ReadWrite
Для теста подключения создаем UDL-файл (cp-1251 unicode) с содержимым:
[oledb]
Provider=SQLOLEDB.1;Initial Catalog=test02;Data Source=SOK-SQL01;User ID=<user>
(и в ADOConnection->ConnectionString подобную строку без [oledb])
вполне может быть что изза того что имя сервера прописывается по разному в хр -SOK-SQL01\SQLSERVER, в 2к - SOK-SQL01.
По поводу разных Data Source (SOK-SQL01\SQLSERVER и SOK-SQL01):
на сервере заведено несколько Instance? Если нет, то везде должно идти SOK-SQL01.
Если ошибка не ушла, пробуем (плюс к тому, что выше) в Data Source ввести ip-адрес или выбираем в cliconfg первый протокол - Named Pipes
Стоит добавить в строку коннекта Mode=ReadWrite
Для теста подключения создаем UDL-файл (cp-1251 unicode) с содержимым:
[oledb]
Provider=SQLOLEDB.1;Initial Catalog=test02;Data Source=SOK-SQL01;User ID=<user>
(и в ADOConnection->ConnectionString подобную строку без [oledb])
По поводу разных Data Source (SOK-SQL01\SQLSERVER и SOK-SQL01):
на сервере заведено несколько Instance? Если нет, то везде должно идти SOK-SQL01.
Если ошибка не ушла, пробуем (плюс к тому, что выше) в Data Source ввести ip-адрес или выбираем в cliconfg первый протокол - Named Pipes
]
Вот оно!!! я нашел кажется косяк! на одних машинах обращение к серверу происходит через sok-sql01, а на других sok-sql01\sqlserver!
instance на сервере один (sqlserver)/ он же по дефолту.
вопрос что делать дальше. подскажите можно ли в ADOconection вписать ip?
if (ADOConnection1->Connected == false)
{
ADOConnection1->ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test02;Data Source=SOK-SQL01";
ADOConnection1->Connected = true;
};
вообщем чтото подобное. кстати если на компе клиента прогойц cliconfg не установлен tcp/ip - то ничего не спасает :) а ктонибудь знает как это прописывать не имея прав администратора ?8)
]
Вот оно!!! я нашел кажется косяк! на одних машинах обращение к серверу происходит через sok-sql01, а на других sok-sql01\sqlserver!
instance на сервере один (sqlserver)/ он же по дефолту.
вопрос что делать дальше. подскажите можно ли в ADOconection вписать ip?
Блин. Ну читайте же внимательнее посты. Вам же xim написал:
Если ошибка не ушла, пробуем (плюс к тому, что выше) [COLOR=red]в Data Source ввести ip-адрес [/COLOR] или выбираем в cliconfg первый протокол - Named Pipe
]
вопрос что делать дальше. подскажите можно ли в ADOconection вписать ip?
Да, в строке соединения Data Source = <ip_addr>
Да, в строке соединения Data Source = <ip_addr>
Блин (боясь в очередной раз запутать), <ip_addr> естественно без угловых скобок :)
Блин (боясь в очередной раз запутать), <ip_addr> естественно без угловых скобок :)
ну да-ДА!!! еще расскажите мне как adoconnection на форму садить.
блин! не работает у меня по айпишнику.
прописываю
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test02;Data Source=10.10.11.131"
скажите где я лох? X)-
тока не надо спрашивать правильный ли айпишник.
ну да-ДА!!! еще расскажите мне как adoconnection на форму садить.
блин! не работает у меня по айпишнику.
прописываю
"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=test02;Data Source=10.10.11.131"
скажите где я лох? X)-
тока не надо спрашивать правильный ли айпишник.
А его вообще из под XP видно? Может дело в FireWall?
А его вообще из под XP видно? Может дело в FireWall?
а как же! firewall'ов никаких нету. пингуется на ура с этим ip.
а как же! firewall'ов никаких нету. пингуется на ура с этим ip.
Качаем SP3a for SQL Server 2000 (исправляет какие-то проблемы для WinServer2003)
Качаем SP3a for SQL Server 2000 (исправляет какие-то проблемы для WinServer2003)
дык, стоит конечно же.