可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a SQL Server 2012.(120.120.55.15)
Today I linked MySQL server(120.120.55.30) to my SQLServer and gave it a name "MYSQL".
In Object Explorer everything seems fine. I can see MySQL server's database "exampleDataBase" and tables in it.
But when I try to run select query like this:
SELECT * FROM openquery ( MYSQL, ' SELECT * FROM [exampleDataBase].[msProcMatrix] ' )
I get a mistake:
Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "MSDASQL" for linked server "MYSQL" reported an error. The provider did not give any information about the error. Msg 7350, Level 16, State 2, Line 1 Cannot get the column information from OLE DB provider "MSDASQL" for linked server "MYSQL".
What should be additionally done to use my linked MySQL server?
回答1:
Found the decision:
SELECT * FROM openquery(MYSQL, 'SELECT * FROM exampleDataBase.msProcMatrix')
Without brackets!
Strange for me but works...
回答2:
This worked great for me after fighting the same issue on MS SQL Server 2008 64bit using the MY SQL 3.51 64 bit ODBC driver
SELECT * FROM OPENQUERY ( linked_server_name, 'SELECT * FROM linked_database_name.linked_table_name' )
回答3:
When I working with linked server, I never use Select * From
.
Try with Select Column1, Column2, ... ColumnN From
.
Always works fine for me.
回答4:
You might need a schema name between the database name and the table name.
SELECT * FROM openquery ( MYSQL, ' SELECT * FROM [exampleDataBase].**[dbo]**.[msProcMatrix] ' )
回答5:
If the default catalog ("exampleDataBase") is configured in ODBC, the following will work as well:
select * from MYSQL...msProcMatrix
回答6:
You Can try this query .
EXEC ( 'SELECT * FROM [exampleDataBase].[msProcMatrix]' ) AT MYSQL
回答7:
Please try the statement in the format below .. for me it works very well
SELECT * FROM openquery ( MYSQL, ' SELECT * FROM [MYSQL]...[exampleDataBase].[msProcMatrix] ' )
Including the extra levels in the name may solve your issue.