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-----多表查询

MySQL基础语法之子链接查询和特殊查询(union 和 limit)

试图制作返回 mysql 'SELECT * FROM' 结果的函数,最终返回 undefined

Mysql“select * from”不返回所有行

mysql之数据查询SELECT * FROM students; SELECT * FROM classes;

Mysql: SELECT * FROM .... 没有一个字段