SELECT * FROM 链接的 MySQL 服务器
Posted
技术标签:
【中文标题】SELECT * FROM 链接的 MySQL 服务器【英文标题】:SELECT * FROM Linked MySQL server 【发布时间】:2013-05-17 06:46:43 【问题描述】:我有一个 SQL Server 2012.(120.120.55.15)
今天我将 mysql 服务器(120.120.55.30)链接到我的 SQLServer 并给它起了一个名字“MYSQL”。
在对象资源管理器中一切似乎都很好。我可以看到 MySQL 服务器的数据库“exampleDataBase”和其中的表。
但是当我尝试像这样运行选择查询时:
SELECT *
FROM openquery
(
MYSQL,
'
SELECT *
FROM [exampleDataBase].[msProcMatrix]
'
)
我弄错了:
消息 7399,级别 16,状态 1,第 1 行 OLE DB 提供程序“MSDASQL”用于 链接服务器“MYSQL”报错。提供者没有给出任何 有关错误的信息。消息 7350,第 16 层,状态 2,第 1 行 无法从 OLE DB 提供程序“MSDASQL”获取列信息 链接服务器“MYSQL”。
要使用我的链接 MySQL 服务器,还需要做什么?
【问题讨论】:
如果 SQL Server Management Studio 使用 64 位,您必须进行调整,因此对于 MySQL 连接器 ODBC,它也必须是 64 位 【参考方案1】:请尝试以下格式的语句.. 对我来说效果很好
SELECT *
FROM openquery
(
MYSQL,
'
SELECT *
FROM [MYSQL]...[exampleDataBase].[msProcMatrix]
'
)
在名称中包含额外的级别可能会解决您的问题。
【讨论】:
【参考方案2】:你可以试试这个查询。
执行 ( 'SELECT * FROM [exampleDataBase].[msProcMatrix]' ) 在 MYSQL
【讨论】:
【参考方案3】:如果在 ODBC 中配置了默认目录(“exampleDataBase”),则以下内容也可以使用:
从 MYSQL 中选择 *...msProcMatrix
【讨论】:
【参考方案4】:找到了决定:
SELECT *
FROM openquery(MYSQL, 'SELECT * FROM exampleDataBase.msProcMatrix')
没有括号!
对我来说很奇怪,但有效...
【讨论】:
这是在 MySQL 中转义列名的正确方法(不是 MSSQL!)请参阅:***.com/a/2889884/244067 我发现列名也区分大小写!【参考方案5】:您可能需要在数据库名称和表名称之间使用架构名称。
SELECT *
FROM openquery
(
MYSQL,
'
SELECT *
FROM [exampleDataBase].**[dbo]**.[msProcMatrix]
'
)
【讨论】:
Mariau,在下面找到我的答案。【参考方案6】:当我使用链接服务器时,我从不使用Select * From
。
试试Select Column1, Column2, ... ColumnN From
。
对我来说总是很好。
【讨论】:
【参考方案7】:在使用 MY SQL 3.51 64 位 ODBC 驱动程序在 MS SQL Server 2008 64 位上解决了同样的问题后,这对我很有用
SELECT *
FROM OPENQUERY
(
linked_server_name,
'SELECT * FROM linked_database_name.linked_table_name'
)
【讨论】:
以上是关于SELECT * FROM 链接的 MySQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章
MySQL基础语法之子链接查询和特殊查询(union 和 limit)
试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined