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?
Found the decision:
SELECT *
FROM openquery(MYSQL, 'SELECT * FROM exampleDataBase.msProcMatrix')
Without brackets!
Strange for me but works...
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'
)
When I working with linked server, I never use Select * From
.
Try with Select Column1, Column2, ... ColumnN From
.
Always works fine for me.
You might need a schema name between the database name and the table name.
SELECT *
FROM openquery
(
MYSQL,
'
SELECT *
FROM [exampleDataBase].**[dbo]**.[msProcMatrix]
'
)
If the default catalog ("exampleDataBase") is configured in ODBC, the following will work as well:
select * from MYSQL...msProcMatrix
You Can try this query .
EXEC
(
'SELECT * FROM [exampleDataBase].[msProcMatrix]'
)
AT MYSQL
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.