SELECT * FROM链接的MySQL服务器

时间:2013-05-22 09:17:55

标签: mysql sql sql-server linked-server ssms-2012

我有一个SQL Server 2012.(120.120.55.15)

今天我将MySQL服务器(120.120.55.30)链接到我的SQLServer,并为其命名为" MYSQL"。

在对象浏览器中,一切似乎都很好。我可以看到 MySQL 服务器的数据库" exampleDataBase "和表格。

但是当我尝试运行这样的选择查询时:

SELECT * 
FROM   openquery
        (
        MYSQL, 
        '
         SELECT * 
         FROM [exampleDataBase].[msProcMatrix]
        '
        )

我弄错了:

  

Msg 7399,Level 16,State 1,Line 1 OLE DB提供程序" MSDASQL"对于   链接服务器" MYSQL"报告错误。提供者没有给予任何   有关错误的信息。 Msg 7350,Level 16,State 2,Line 1   无法从OLE DB提供程序获取列信息" MSDASQL"对于   链接服务器" MYSQL"。

使用我的链接MySQL服务器还需要做些什么?

7 个答案:

答案 0 :(得分:12)

找到了决定:

SELECT * 
FROM openquery(MYSQL, 'SELECT * FROM exampleDataBase.msProcMatrix')

没有括号!

对我来说很奇怪,但有效......

答案 1 :(得分:3)

使用MY SQL 3.51 64位ODBC驱动程序在MS SQL Server 2008 64bit上解决相同问题后,这对我很有用。

SELECT *
FROM OPENQUERY
(
   linked_server_name,
   'SELECT * FROM linked_database_name.linked_table_name'
)

答案 2 :(得分:1)

您可能需要数据库名称和表名之间的模式名称。

SELECT * 
FROM   openquery
        (
        MYSQL, 
        '
         SELECT * 
         FROM [exampleDataBase].**[dbo]**.[msProcMatrix]
        '
        )

答案 3 :(得分:1)

当我使用链接服务器时,我从不使用Select * From

尝试使用Select Column1, Column2, ... ColumnN From

对我来说总是很好。

答案 4 :(得分:0)

如果在ODBC中配置了默认目录(“exampleDataBase”),则以下内容也可以使用:

从MYSQL中选择* ... msProcMatrix

答案 5 :(得分:-2)

您可以尝试此查询。

EXEC ( ' SELECT * FROM [exampleDataBase]。[msProcMatrix]' ) 在MYSQL

答案 6 :(得分:-2)

请尝试以下格式的声明.. 对我而言,它运作良好

SELECT * 
FROM   openquery
        (
        MYSQL, 
        '
         SELECT * 
         FROM [MYSQL]...[exampleDataBase].[msProcMatrix]
        '
        )

在名称中包含额外的级别可能会解决您的问题。