Драйвер odbc не поддерживает требуемые свойства
MOV » 01.04.2004 (Чт) 17:46
Dim WithEvents Cn As ADODB.Connection
Dim WithEvents Rs As ADODB.Recordset
Private Sub Cn_ConnectComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
Rs1.ActiveConnection = Cn
Rs1.Source = "IR61BHED IR Header" ' имя таблицы, к котрой
End Sub ' подключаюсь
Private Sub Form_Load()
Set Cn = New ADODB.Connection
Set Rs = New ADODB.Recordset
Cn.ConnectionString = "Provider=MSDASQL.1; Persist Security Info=False;Data Source=sam_all_demo32"
End Sub
Вот такой вот код. Это лучше чем ADODC- контрол, но с серваком все равно работает дико медленно. Склоняюсь к мысли, что на VB, используя его библиотеки и контролы, быстрее все равно не получится Только, если писать модуль на языке самой базы.
А может кто знает, как ускорить процесс (в таблице надо обновлять поля). Пробовали свойство Rs.Filter, но по времени получается то же самое, если не медленне.
И вот еще вопрос ведь по идее, в Rs.Source можно вставить SQL-запрос. Но драйвер ODBC ругается и не хочет его обрабатывать. Подскажите работающий синтаксис (SQL запроса)а? Пробовал ставить зарпос, формируемый в Access - все равно не хочет. Возможно, конечно, это сам драйвер косячит, а там к.е.з.
В общем как сделать быстрее?
Rainbow » 01.04.2004 (Чт) 18:39
Не совсем поняла, как связаны rs.Filter и обновление полей.
SQL-запрос должен нормально кушаться. Если с ним еще не разобрался - напиши, что за запрос и какую ошибку выдает - разберемся.
По поводу скорости ничего определенного сказать не могу. Могу только дать еще пару способов работы с рекордсетом (не уверена, что это будет быстрее)
Кроме способа модификации самого рекордсета, есть возможность создать объект Command и обновлять базу с помощью него (но тогда тебе грозит requery рекодрсета).
Учиться - значит открывать для себя то, что уже знаешь. <. >Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <. >Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)
MOV » 02.04.2004 (Пт) 9:45
По моему, все дело в SQL запросе, может, я что-то не так пишу в нем?
Dim WithEvents Cn As ADODB.Connection
Dim WithEvents Rs1 As ADODB.Recordset
Dim Sour As String
Private Sub Form_Load()
Set Cn = New ADODB.Connection
Set Rs1 = New ADODB.Recordset
Cn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=sam_all_demo32"
Cn.Open
End Sub
Private Sub Command1_Click()
Rs1.Open
' Дальше процедура обновления определенных полей выбранных записей
' хотя, если он съест SQL, думаю, что можно сделать обновление
' сразу в самом запросе, но даже такой вот простой запрос не работает
' пишет дословно:
' Run-Time Error '-2147217887 (80040e21)
' Драйвер ODBC не поддерживает требуемые свойства
' Если заремить Rs1.CursorType= . и Rs1.LockType= .
' то тоже все работает, но, если обращаться в целом к таблице, а не запросом
' если с запросом, то пишет:
' Run-Time Error '-214721790 (80040e14)'
' [LINK]Unexpected extratoken: Details]
' и тоже бросает на Rs1.Open. Пробовал по разному, с разными ключами и без
End Sub
В общем, думаю, что проблема в SQL запросе, но ведь, если сделать SQL запрос в Accesse
То там он работает (через этот же драйвер), да и просто с таблицей в VB работает ведь и с разными ключами. Что не так, может сам MS Activex Data Objects 2.5 Librery криво работает с ODBC?
Cyrax » 02.04.2004 (Пт) 14:04
начнем с того, что через ODBC-провайдер доступ к данным происходит намного медленнее, нежели при использовании родного провайдера. для MS SQL Server (судя по всему именно он используется) - это будет так Код: Выделить всё CN.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User Catalog=;Data Source="
и, естественно, обнови библиотеку ADO (а точнее Microsoft Data Access Components)
да, и еще. прочитай книгу "Руководство разработчика баз данных на Visual Basic 6"
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно. (озадаченно) А это в какую сторону тянуть? Ну-ка. Ага, этот был лишний, этот вообще не отсюда, и этот. Точно, два болта.
MOV » 02.04.2004 (Пт) 16:28
"начнем с того, что через ODBC-провайдер доступ к данным происходит намного медленнее. "
Это, кончено, понятно, но по другому никак, если только написать свой драйвер, хотя бы для необходимых таблиц, но это долго.
Быстрее выучить Access C (на нем написана база и, соответственно, дописав свой модуль, может что-то получится )
burik » 04.12.2005 (Вс) 20:34
Люди! Помоите пожалуйста!
Нужно сделать таблицу с определенным кол-вом столбцов и одной строкой, причем при добавлении текста в одну из ячеек строки должна добавляться другая строка.
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман
GSerg » 05.12.2005 (Пн) 17:23
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
Но есть удаленная MySQL. Решил пробовать через ODBC, что бы подключаться к обеим базам, меняя только строку подключения.
Во время MyConnection.Open(); эта ошибка и вылезает.
В источниках данных создал некий источник с именем Name, вбил все данные для удаленного MySQL и нажав на кнопочку Test получил уведомление, что соединение успешно (да и базы данных из раскрывающегося меню подтягиваются сами).
При этом, такой код вполне работает:
Тут я подключаюсь к своей MSSQL базе. Правда почему-то ругается на пару логин/пароль (не знаю почему, пока ищу ответ), но по крайней мере он видит базу данных.
Добавлено через 38 минут
Небольшая наводка из наблюдений и догадок.
У меня есть сторонняя программа, которая так же использует ODBC соединение. При вводе данных сервера она выдает туже ошибку, что у меня. Но у нее имеется возможность коннектиться через DSN. И вот если я пропишу упомянутый выше источник данных "Name" с теми же самыми данными сервера (а как я писал, кнопка Test - выдает Successfus), то эта программа нормально соединяет.
Добавлено через 3 часа 35 минут
Разобрался. Для таких же как я еще раз по полочкам:
Хотим создать подключение к MSSQL и MySQL через ODBC.
//MSSQL
string MyConString - строка подключения
DRIVER - название используемого драйвера для общения с MSSQL/MySQL (ниже подробнее)
SERVER - имя сервера MSSQL/MySQL или его IP-адрес (242.54.12.52).
DATABASE - имя базы данных
UID - имя пользователя для входа на сервер MSSQL/MySQL
PASSWORD - пароль для входа на сервер MSSQL/MySQL
OPTION - без понятия. Вроде и без нее работает.
Если строчка MyConnection.Open(); не выдала ошибку, то все в порядке, мы имеем доступ к базе данных.
После установки приведенный выше код уже должен работать.
Проверить драйвера на Windows 7, можно запустив
c:\Windows\System32\odbcad32.exe - для 32-битных систем
c:\Windows\SysWOW64\odbcad32.exe - для 64-битных систем
и открыв вкладку "Драйвера".
У меня например была ошибка IM0002 (источник Данных не найден и не указан драйвер по умолчанию).
По странной причине драйвера у меня слетели, но отображались созданные по ним "Пользовательские DSN" (все там же в odbcad32.exe).
Попытки "Настроить" или "Удалить" эти DSN система блокировала ссылаясь на то, что "такой драйвер не доступен". Решил это тем, что поставил поверх старых, новые драйвера и добавил "Пользовательские DSN" с тем же именем, заменив старые.
После этого появилась ошибка IM014 (В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу)
У меня стоит Wimdows 7 64-bit. Запустив c:\Windows\SysWOW64\odbcad32.exe, я разумеется нашел там установленные новенькие драйвера для 64-битной системы. Ошибка же появлялась из-за того, что сервер, к которому я обращался стоит на ОС 32-bit.
Соответственно тут:
c:\Windows\System32\odbcad32.exe
этих драйверов не было. Поставил для 32-bit - заработало.
P.S. написал так, как сумел понять, так что новичкам не принимать это как однозначную истину. Кто в теме, поправьте, если что не так.
Есть программа под х86, которая обращается к базе данных на MySQL. Работоспособность программы проверена на 2х своих ПК под х86 и х64.
Данную программу необходимо установить на удаленные ПК. Имея права администратора домена скажем тоталом копирую все необходимые файлы на удаленный ПК:
- 32 битная основная программа
- mysql-connector-odbc-noinstall-5.2.6-win32 - необходимый для создания DSN (Data Source Names) для коннекта с сервером.
Далее запускаю удаленную командную строку (PsExec), выполняю установку mysql-connector-odbc-noinstall-5.2.6-win32 через install.bat
после этого с помощью батника выполняю добавление DSN
На 32 битной Виндоус добавляется отлично. На 64 битной после запуска окно сразу закрывается.
Чтобы проверить наличие ODBC на удаленной машине захожу через удаленный реестр в ветку
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
и в ней нет записей об созданном DSN.
Читал в интернетах что для работы 32хбитного приложения через ODBC необходимо чтобы DSN был прописан в ветке
the app under SysWOW64 creates entries at "computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC. INI"
Теперь непосредственно о проблеме.
При просмотре удаленного реестра ветка HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI не отображается, а значит я немогу ни проверить визуально наличие моего DSN ни добавить его вручную.
Вопрос1. Как изменить батфайл по добавлению DSN для 64 битных систем исходя из того что:
There are two ODBC locations on a 64 bit machine. C:\windows\System32\odbcad32.exe (this is for the 32 bit) C:\windows\SysWOW64\odbcad32.exe (for 64 bit)
Вопрос2. Как просмотреть реестр в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ ?
Добавлено через 20 минут
Попробую через PowerShell
х64 и х86
Дайте ссылку на free pascal чтоб работал на двух системах х64 и х86, и при компиляции в одной.
WINDOWS 7 х64 ИЛИ х86
У меня процессор Intel(R) Core(TM)2 Duo CPU E7400 @2.80GHz 2.80 GHz ОЗУ 3Гб тип системы 32 РОС И.
подскажите х64 или х86
Всем привет мне нужна помощь купил новый компьютер и хочу узнать сколько у меня разрядов х64-х86 у.
подскажите х64 или х86
Доброго времени суток всем, Сразу извиняюсь если пишу не в ту тему, пожалуйста не закидывайте.
Итак, получилось! Расскажу подробнее, может кому пригодится.
Начну со второго вопроса.
Как удаленно посмотреть ветку? Да никак! Для того чтобы туда установить и прописать ODBC создал батник, оттестировал его на своей 64 битной. Сам батник выполняю через PsExec на удаленной машине - прописывается все как надо и работает.
Что либо сделать с PowerShell проблематично, так как более менее адекватная работа с ODBC реализована только в 4.0, который надо предварительно устанавливать на удаленный ПК. Если это сделать заранее - тогда удаленно через PS все получится.
В старых версиях PS я не нашел подходящих мне функций для выполнения данной задачи + есть ряд сложностей с включением служб для PS Remoting. Если несколько служб не запущено - просто не сможете подключиться к удаленной машине. Пляски с бубном в общем.
И по первому вопросу. Батник на добавление DSN имеет такой вид:
64 битная ОС\32 битный драйвер+программа:
Windows х86 или х64?
У меня слабенький комп но кое-как пыхтит. Стоит хр х86, но название процессора AMD Athlon 64.
х86 работает нормально, но х64 глючит
Всем привет! Незнаю куда написать, ну написал сюда. Проблема заключается в следующем: х86 ось.
Перекодировка библиотек х86 в библиотеки х64 (opencv)
Взялся установить в VC 2015 библиотеки opencv, а винду 10 устанавливал пару лет назад как 32.
Хочу скачать хорошую windows 7 максимальную х64/х86
Хочу скачать хорошую windows 7 максимальную х64/х86. Искал в интернете не нашел. Кто может киньте.
Какую версию Windows 7 х86 или х64 лучше установить
Хотелось бы узнать обоснованный вывод: какой виндоус 7 или ХР поставить х86 или х64 и почему.
При попытке создать в Windows программу, которая подключается к базе данных через ODBC, я получил следующую ошибку:
[Microsoft] [Диспетчер драйверов ODBC] Имя источника данных не найдено, и драйвер по умолчанию не указан.
Я уверен, что мой код правильный. Он работал даже на другом ПК.
1 ответ
Что вызывает эту ошибку?
Это может иметь 3 распространенные причины:
- Драйвер, который вы пытались использовать, не установлен в вашей системе
- Драйвер установлен, однако он не соответствует разрядности кода, который вы используете.
- Вы допустили ошибку при вводе имени драйвера
Как мне проверить, какие драйверы установлены в моей системе?
Вы можете проверить драйверы, которые установлены в вашей системе, перейдя в Администратор источника данных ODBC. Чтобы открыть его, нажмите ⊞ Win + R и введите: odbcad32.exe . Затем проверьте вкладку Драйверы на наличие установленных драйверов. Столбец Имя указывает точное имя, которое вы должны использовать в строке подключения или DSN.
Если вы используете 64-битную Windows, в нем перечислены только 64-битные драйверы, установленные на ваша система. Чтобы увидеть, какие 32-разрядные драйверы установлены, нажмите ⊞ Win + R , введите: C:\Windows\SysWOW64\odbcad32.exe и перейдите в Драйверы tab снова.
Драйвер установлен, но может быть неправильная разрядность, что мне делать?
Затем у вас есть два варианта: либо настроить разрядность, в которой работает ваша программа, либо установить драйвер с другой разрядностью.
Некоторые драйверы, которые по умолчанию устанавливаются в Windows, имеют только 32-разрядный вариант. Их нельзя использовать с 64-битными программами.
Обычно вы можете определить разрядность программы в диспетчере задач. В Windows 10 к имени всех 32-разрядных программ добавлено (32-разрядное). Если этого нет, скорее всего, вы используете 64-разрядную программу, а большинство современных языков программирования и сред по умолчанию работают на 64-разрядной версии, но позволяют переключиться на 32-разрядную версию. Однако специфика разных языков программирования выходит за рамки этого вопроса.
Как проверить, правильно ли я ввел имя драйвера?
Строка подключения ODBC выглядит так:
Часть имени драйвера должна быть ограничена фигурными скобками, если она может содержать специальные символы, и должна точно соответствовать имени установленного драйвера, как указано в ODBC Data Source Administrator, включая пробелы и типографские символы, но исключая использование заглавных букв.
Обратите внимание, что для развернутого кода драйвер должен присутствовать на компьютере / сервере, на котором выполняется код.
У меня нет драйвера, или у меня неправильный бит, где мне взять правильный?
Это зависит от того, какой драйвер вы хотите использовать.
Список распространенных драйверов с указанием мест загрузки (все 32-битные и 64-битные по одному URL-адресу):
Если драйвера, который вы хотите использовать, нет в списке, его местоположение обычно легко найти с помощью Google.
Я настраивал системный DSN (64-разрядный) для своей базы данных на SQL Server 2016 с 64-разрядной версией Windows 10 Pro. Хотя меня попросили выбрать драйвер для настройки источника данных, есть следующие варианты:
- Драйвер ODBC 13 для SQL Server
- SQL Server
- Собственный клиент SQL Server 11.0
- Собственный клиент SQL Server RDA 11.0
Казалось, я могу настроить источник данных со всеми этими драйверами. Тогда какой из них выбрать по скорости и эффективности? В чем разница между ними?
4 ответа
Драйвер ODBC для SQL Server
ODBC - это основной собственный API доступа к данным для приложений, написанных на C, C ++, PHP, Python и других, для подключения к SQL Server.
Он широко используется в сценариях интеграции данных.
Кроме того, предпочтительно, если вы разрабатываете приложение для Windows и развертываете его в Linux.
SQL Server
Полное имя драйвера SQL Server - Драйвер ODBC SQL Server. Это старый драйвер, начиная с sql 2000. Вы можете использовать его для подключения к SQL Server 2016, но вы не сможете получить доступ к новым функциям и функциям SQL Server 2016.
Собственный клиент SQL Server
Собственный клиент SQL Server содержит как поставщик SQL OLE DB, так и драйвер SQL ODBC для поддержки встроенного подключения к SQL Server и всех функций sql server 2016. Это лучший вариант в среде Windows.
RDA для собственного клиента SQL Server
Удаленный доступ к данным (RDA) в Microsoft SQL Server Compact 3.5 позволяет приложению получать доступ к данным из удаленной таблицы базы данных SQL Server.
Он также может хранить, читать и обновлять эти данные в SQL Server Compact 3.5, а затем обновлять исходную таблицу SQL Server.
В следующем выпуске RDA будет удалено, поэтому не используйте его.
Поэтому выбирайте драйвер sql на основе вышеуказанных критериев.
Похоже, что в последней версии для собственного клиента SQL Server собственный клиент Microsoft® SQL Server® 2012 также назывался собственным клиентом SQL Server 11.0. Не поддерживает новую функцию в SQL Server 2014 и новее.
Обратите внимание, что SNAC 11 не поддерживает функции, выпущенные с SQL Server 2014 и SQL Server 2016, которые не были доступны как часть SQL Server 2012, такие как разрешение прозрачного сетевого IP-адреса, постоянное шифрование, проверка подлинности Azure AD, массовое копирование и параметры значений таблицы.
Вы должны использовать Microsoft® ODBC Driver 11 или 13 для SQL Server, чтобы пользоваться новой функцией в SQL Server 2014 или более поздней версии.
Как упоминалось ранее в этом посте, более поздние версии драйвера ODBC (13 и более поздние) предоставляют вам доступ к более продвинутым функциям, доступным в SQL Server 2014, 2016 и т. Д.
В этой ссылке говорится, что вам необходимо использовать ODBC 13 для SQL Server 2012: Версии драйверов SQL Server
Однако, если вы посмотрите на загрузку для ODBC версии 17, она укажет на поддержку SQL Server 2012 (и более старых версий SQL Server).
Так что, возможно, драйвер ODBC версии 17 (по крайней мере) обратно совместим со старыми версиями SQL Server.
Надеюсь это поможет!
Драйвер Microsoft ODBC для SQL Server (MSODBCSQL)
Собственный клиент SQL Server (SQLNCLI)
Представлено в SQL Server 2005 и поставляется с SQL Server (также устанавливается через sqlncli.msi из пакетов функций SQL Server). Добавлены функции по сравнению с SQL Server: несколько активных наборов результатов (MARS), определяемые пользователем типы данных (UDT), уведомления о запросах, изоляция моментальных снимков и поддержка типов данных XML.
RDA для собственного клиента SQL Server
Удаленный доступ к данным (RDA) - это функция SQL Server Compact, которая «позволяет приложению получать доступ к данным из удаленной таблицы базы данных SQL Server». Я не могу найти много документации, но похоже, что этот драйвер был предназначен для поддержки сценариев репликации с помощью Compact Edition.
SQL Server (SQLSRV32)
Включено в компоненты доступа к данным Microsoft (MDAC) (теперь называемые компонентами доступа к данным Windows (WDAC)). Этот драйвер доступен по умолчанию в Windows (начиная с 98 и NT 4.0).
Читайте также: