Нужна помощь в создании ODBC MySQL Connection
Укороченная версия:
Как подключиться из PowerShell к драйверу ODBC 5.1 MySQL? Я не могу найти какие-либо строки подключения, которые точно имеют поле "Провайдер" для этого конкретного экземпляра. (Смотрите в нижней части этого вопроса для примеров / ошибок)
=====
Длинная версия:
Я не серверный парень, и мне поручено настроить PowerGadgets в нашей сети.
У меня есть сервер MySQL, работающий на компьютере с Linux, который настроен для удаленного доступа, а для него также определен пользователь.
На моем настольном ПК с Windows у меня установлены PowerGadgets. Я установил коннектор MySQL ODBC 5.1, зашел в Панель управления> Источники данных и настроил подключение DSN пользователя к базе данных.
Соединение, пользователь и пароль кажутся правильными, потому что в нем перечислены таблицы базы данных в моей панели управления Windows.
Где я сталкиваюсь с неприятностями, находится в 3 местах в PowerGadgets:
При выборе источника данных я могу выбрать "SQL Server". Ввод IP-адреса сервера не работает, и я не могу заставить эту опцию работать вообще.
При выборе источника данных я могу выбрать "OleDB". На этом экране есть мастер, который, кажется, заполняет всю правильную информацию (включая имена таблиц базы данных!) Для меня. "Тестовое соединение" работает отлично. Но если я пытаюсь завершить работу мастера, я получаю сообщение об ошибке "Поставщик данных.NET Framework для OLEDB не поддерживает поставщик MS Ole DB для драйверов ODBC".
При выборе источника данных я могу выбрать "ODBC". На этом экране нет мастера, и я не могу понять, какая "строка подключения" работает. Обычно он отвечает с ошибкой "Поле" Провайдер "отсутствует". Поиск строк соединения ODBC в Google не приводит ни одного примера с полем "провайдер" и не имеет представления, что здесь вставить. Строка соединения (для #2) выше содержит "SQLOLEDB" в качестве поставщика, и после ввода этого значения в эту строку соединения я получаю ту же ошибку соединения, что и # 2.
Я считаю, что могу решить свои проблемы, выяснив строку подключения для № 3, но не знаю, с чего начать.
(PowerGadgets также допускает поддержку PowerShell, но я думаю, что я столкнусь с той же проблемой)
==
Вот мое текущее соединение PowerShell, которое не работает:
invoke-sql -connection "Driver={MySQL ODBC 5.1 Driver};Initial Catalog=hq_live;Data Source=HQDB" -sql "Select * FROM accounts"
Выплевывает ошибку:
"Invoke-Sql : An OLE DB Provider was not specified in the ConnectionString. An example would be, 'Provider=SQLOLEDB;'.
==
Еще одна строка, которая не работает:
invoke-sql -connection "Provider=MSDASQL.1;Persist Security Info=False;Data Source=HQDB;Initial Catalog=hq_live" -sql "select * from accounts"
И ошибка:
The .Net Framework Data Provider for OLEDB (System.Data.OleDb) does not support the Microsoft OLE DB Provider for ODBC Drivers (MSDASQL). Use the .Net Framework Data Provider for ODBC (System.Data.Odbc).
1 ответ
Я не знаю, с чего начать, поэтому я просто нырну прямо посередине.
"SQL Server" означает "Microsoft SQL Server", поэтому это не работает. По какой-то причине Microsoft предпочитает называть свои продукты после общих терминов.
invoke-sql
является частью PowerGadgets и задокументирована здесь: http://support.softwarefx.com/SupportDocTree.aspx?Prod=PG10&Type=A
Судя по скудной документации и сообщениям об ошибках, которые вы получаете, invoke-sql
ожидает подключения к базе данных через ADO.NET. Из документации я не вижу способа сказать, какой драйвер ADO.NET использовать, но, похоже, вы можете настроить его в каком-то графическом интерфейсе - немного странно, но все в порядке.
ADO.NET предоставляет уровень совместимости для подключения к базам данных, которые предоставляют только драйверы OLE DB или ODBC. Если вы выберете "OLE DB" или "ODBC", то звучит так, будто PowerGadgets проходит через этот уровень совместимости (опять же, судя по сообщениям об ошибках).
Причина, по которой OLE DB не работает для вас, заключается в том, что указанная вами строка подключения говорит OLE DB о подключении через еще один уровень совместимости для связи с базой данных через драйверы ODBC. Похоже, ADO.NET специально запрещает это, предположительно, потому что это вызовет все виды боли при общении с базой данных через два уровня совместимости и драйвер ODBC.
MySQL не предоставляет драйвер OLE DB, но вы можете получить его, установив сторонний драйвер MySQL OLE DB (к сожалению, платный продукт, но вы можете попробовать его бесплатно в течение нескольких дней).
ODBC должен работать, но, похоже, что-то пытается проверить вашу строку подключения, как если бы это была строка подключения OLE DB. Строки подключения OLE DB включают Provider
параметр, но я никогда не видел этот параметр в строке подключения ODBC. Я немного озадачен этим, но я подозреваю, что ошибка / сбой в PowerGadgets.
MySQL предоставляет драйвер ADO.NET, который называется Connector / NET. Если вы установите его, то, если вам повезет, возможно, PowerGadgets предложит вам вместо этого использовать этот драйвер. Я сомневаюсь, что так и будет, но если это произойдет, то это, вероятно, ваш лучший вариант. Строка подключения MySQL Connector/NET выглядит следующим образом:
server=localhost;user=dan;database=stuff;port=3306;password=bla;