Укороченная версия:
Как подключиться из PowerShell к драйверу MySQL ODBC 5.1? Кажется, я не могу найти никаких строк подключения, в которых точно есть поле «Поставщик» для этого конкретного экземпляра. (Примеры / ошибки см. Внизу этого вопроса)
=====
Длинная версия:
Я не серверный парень, и мне поручили настроить PowerGadgets в нашей сети.
У меня есть сервер MySQL, работающий в Linux, который настроен для удаленного доступа и также имеет пользователя, определенного для удаленного доступа.
На моем настольном ПК с Windows установлены PowerGadgets. Я установил коннектор MySQL ODBC 5.1, перешел в Панель управления> Источники данных и настроил соединение User DSN с базой данных.
Соединение, пользователь и пароль кажутся правильными, потому что в моей панели управления Windows перечислены таблицы базы данных.
Проблемы у меня возникают в трех местах PowerGadgets:
При выборе источника данных я могу выбрать «SQL Server». Ввод IP-адреса серверов не работает, и я вообще не могу заставить эту опцию работать.
При выборе источника данных я могу выбрать «OleDB». На этом экране есть мастер, который, кажется, заполняет для меня всю правильную информацию (включая имена таблиц базы данных!). «Тестовое соединение» работает отлично. Но если я попытаюсь завершить работу мастера, я получаю сообщение об ошибке «Поставщик данных .NET Framework для OLEDB не поддерживает поставщика MS Ole DB для драйверов ODBC».
При выборе источника данных я могу выбрать «ODBC». На этом экране нет мастера, и я не могу определить, какая «строка подключения» работает. Обычно он отвечает с ошибкой «Отсутствует поле« Провайдер »». Поиск в Google строк подключения ODBC не обнаруживает никаких примеров с полем «поставщик» и понятия не имеет, что сюда вставить. Строка подключения (для №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).
Я не знаю, с чего начать, поэтому я просто нырну прямо посередине.
«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;