简短版本:
如何从PowerShell连接到ODBC5.1 MySQL驱动程序?我似乎找不到任何连接字符串为这个特定的实例准确地有一个“提供者”字段。(有关示例/错误,请参见本问题的底部)
=====
长篇版本:
我不是一个服务生,我被赋予了在我们的网络上设置PowerGadgets的任务。
我有一个运行在Linux上的MySQL服务器,它被配置为远程访问,并且定义了一个用于远程访问的用户。
在我的windows桌面PC上,我安装了PowerGadgets。我安装了MySQL ODBC5.1连接器,然后转到Control >数据源,并设置了到数据库的用户DSN连接。
连接、用户和传递似乎是正确的,因为它在我的windows控制面板中列出了数据库的表。
我遇到麻烦的地方在PowerGadgets的三个地方:
我相信我可以通过为#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).发布于 2011-06-21 23:54:47
我不知道从哪里开始,所以我就直接跳到中间去。
“SQL Server”的意思是“Microsoft SQL Server”,这就是为什么不起作用的原因。出于某种原因,微软喜欢用通用术语来命名他们的产品。
invoke-sql是PowerGadgets的一部分,在这里有文档说明:http://support.softwarefx.com/SupportDocTree.aspx?Prod=PG10&Type=A
从稀疏的文档和您得到的错误消息来看,invoke-sql希望通过ADO.NET连接到数据库。从文档中我看不到任何方法来告诉它要使用什么ADO.NET驱动程序,但听起来可能您可以在某种GUI中设置它--有点奇怪,但是可以。
ADO.NET提供了一个兼容性层,用于连接到只提供OLE DB或ODBC驱动程序的数据库。如果您选择“OLE DB”或“ODBC”,那么听起来PowerGadgets正在通过兼容层(从错误消息判断)。
OLE不适合您的原因是,您提供的连接字符串告诉OLE DB通过另一个兼容层进行连接,以便通过其ODBC驱动程序与数据库进行通信。这听起来像是ADO.NET特别不允许这样做,大概是因为它会导致通过两个兼容层和一个ODBC驱动程序与数据库对话的各种痛苦。
MySQL没有提供OLE DB驱动程序,但是您可以通过安装第三方MySQL OLE DB驱动程序 (不幸的是一个付费产品,但您可以免费试用几天)来使它工作。
ODBC应该可以工作,但听起来像是在尝试验证连接字符串,就好像它是OLE DB连接字符串一样。OLE DB连接字符串包括一个Provider参数,但我从未在ODBC字符串中看到过该参数。我对这个有点困惑,但我怀疑是PowerGadgets中的一个错误/错误。
MySQL提供了一个称为连接器/网的ADO.NET驱动程序。如果你安装了它,那么如果你幸运的话,也许PowerGadgets会让你选择使用那个驱动程序。我对此表示怀疑,但如果会的话,这可能是你最好的选择。MySQL连接器/网络连接字符串如下所示:
server=localhost;user=dan;database=stuff;port=3306;password=bla;https://serverfault.com/questions/282740
复制相似问题