需要帮助进行ODBC MySQL连接

简洁版本:

如何从PowerShell连接到ODBC 5.1 MySQL驱动程序? 我似乎无法find任何连接string准确地有一个“提供者”字段为这个特定的实例。 (有关示例/错误,请参阅此问题的底部)

=====

长版本:

我不是一个服务器的人,我已经交给了在我们的networking上build立PowerGadgets的任务。

我有一个Linux服务器上运行的MySQL服务器,configuration为远程访问,并有一个用户定义远程访问。

在我的Windows台式电脑上,我安装了PowerGadgets。 我安装了MySQL ODBC 5.1连接器,然后转到“控制面板”>“数据源”,然后build立到数据库的用户DSN连接。

连接,用户和传递似乎是正确的,因为它列出了我的Windows控制面板中的数据库表。

我遇到麻烦的地方是在PowerGadgets的3个地方:

  1. select数据源时,我可以select“SQL Server”。 input服务器IP地址不起作用,我不能得到这个选项工作。

  2. select数据源时,可以select“OleDB”。 这个屏幕上有一个向导,似乎为我填充所有正确的信息(包括数据库表名!)。 “testing连接”运行良好。 但是,如果我尝试完成该向导,则会出现错误“OLEDB的.NET Framework数据提供程序不支持ODBC驱动程序的MS Ole DB提供程序”。

  3. select数据源时,可以select“ODBC”。 这个屏幕没有向导,我不能找出一个“连接string”的工作。 通常情况下,它会回应错误“领域”提供者“缺less”。 searchODBC连接string不会透露任何与“提供者”字段的例子,不知道在这里放什么。 上面的连接string(用于#2)包含“SQLOLEDB”作为提供程序,并将该值input到此连接string中时,会得到与#2相同的连接错误。

我相信我可以通过计算#3的连接string来解决我的问题,但不知道从哪里开始。

(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;'. 

==

另一个不起作用的string:

 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”,这就是为什么不起作用。 出于某种原因,微软喜欢在通用条款之后命名他们的产品。

invoke-sql是PowerGadgets的一部分,这里logging: http : //support.softwarefx.com/SupportDocTree.aspx? Prod=PG10&Type =A

通过稀疏的文档和错误消息判断, invoke-sql希望通过ADO.NET连接到数据库。 从文档中我看不出有什么办法来告诉它使用什么ADO.NET驱动程序,但是听起来也许你可以在某种graphics用户界面(GUI)中设置它 – 有点奇怪,但确定。

ADO.NET提供了一个兼容层来连接到仅提供OLE DB或ODBC驱动程序的数据库。 如果您select“OLE DB”或“ODBC”,那么听起来像PowerGadgets正在通过该兼容层进行通信(再次根据错误消息来判断)。

OLE DB不能正常工作的原因是,您提供的连接string是告诉OLE DB通过另一个兼容层进行连接,以便通过ODBC驱动程序与数据库进行通信。 这听起来像ADO.NET特别不允许这样做,大概是因为它会导致各种痛苦,通过两个兼容层和一个ODBC驱动程序与数据库交谈。

MySQL不提供OLE DB驱动程序,但您可以通过安装第三方MySQL OLE DB驱动程序 (不幸是付费产品,但可以免费试用几天)来获得它的工作。

ODBC应该可以工作,但听起来像是在尝试validation连接string,就好像它是一个OLE DB连接string一样。 OLE DB连接string包含一个Provider参数,但是我从来没有在ODBC连接string中看到该参数。 我有点被这一个难住,但我怀疑PowerGadgets中的错误/ misfeature。

MySQL提供了一个名为Connector / NET的ADO.NET驱动程序 。 如果你安装了,那么如果你幸运的话,PowerGadgets可以提供使用该驱动程序的选项。 我有点怀疑它,但如果这样做,那么这可能是你最好的select。 MySQL Connector / NET连接string如下所示:

 server=localhost;user=dan;database=stuff;port=3306;password=bla;