我有一个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服务器还需要做些什么?
答案 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]
'
)
在名称中包含额外的级别可能会解决您的问题。