【问题标题】:SELECT * FROM Linked MySQL serverSELECT * FROM 链接的 MySQL 服务器
【发布时间】: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 位

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


【解决方案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')
        

        没有括号!

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

        【讨论】:

        【解决方案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'
          )
          

          【讨论】:

            猜你喜欢
            • 2012-10-31
            • 1970-01-01
            • 2012-07-21
            • 2016-10-06
            • 1970-01-01
            • 1970-01-01
            • 2014-06-17
            • 2018-12-01
            相关资源
            最近更新 更多