【发布时间】:2015-11-05 05:55:57
【问题描述】:
我正在尝试使用SQL Server 查询MySQL 链接服务器。
以下查询运行良好。
SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM Table_Name')
是否可以在不使用OpenQuery 调用的情况下运行相同的查询?
【问题讨论】:
标签: mysql sql-server linked-server openquery
我正在尝试使用SQL Server 查询MySQL 链接服务器。
以下查询运行良好。
SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM Table_Name')
是否可以在不使用OpenQuery 调用的情况下运行相同的查询?
【问题讨论】:
标签: mysql sql-server linked-server openquery
在这里找到答案。现在我可以进行三点符号查询了。谢谢
http://www.sparkalyn.com/2008/12/invalid-schema-error/
转到提供程序选项屏幕在 SQL Server 2005 中,您可以在链接服务器上方的文件夹中看到提供程序列表(假设您具有适当的权限)。右键单击 MSDASQL 并转到属性。在 SQL Server 2000 中,提供程序选项按钮位于创建链接服务器的对话框中。 选中“仅零级”复选框
【讨论】:
你可以使用下面的语句
select * from [linkedServerName]...[databaseName.TableName]
但是在执行上面的代码之前,你必须做一些改变..
在 SSMS 中
SSMS -> 展开“链接服务器”文件夹 -> 打开 Provider 文件夹 -> 找到 MSDASQL 并获取它的属性
然后检查“仅零级”按确定
然后执行上面的查询,尽情享受吧!!!
【讨论】:
试试这样:
SELECT * FROM [Linked_Server]...[db_name.table_name]
工作正常,但是存在转换数据类型的问题。 使用起来更安全可靠的是 OPEQUERY。
SELECT * FROM OPENQUERY([Linked_Server], 'SELECT * FROM db_name.table_name')
【讨论】:
您应该可以直接查询链接服务器。
select * from mylinkedserver.database.schema.mytable
编辑:
尝试使用本文中提到的三点表示法: http://www.ideaexcursion.com/2009/02/25/howto-setup-sql-server-linked-server-to-mysql/
SELECT * FROM MYSQLAPP...tables
消息 7399,级别 16,状态 1,第 1 行 OLE DB 提供程序“MSDASQL”用于 链接服务器“MySQLApp”报告错误。提供者没有给 有关错误的任何信息。消息 7312,第 16 层,状态 1,第 1 行 对 OLE DB 提供程序“MSDASQL”的架构或目录的使用无效 链接服务器“MySQLApp”。提供了一个由四部分组成的名称,但 提供者没有公开必要的接口来使用目录或 架构。
这个“四部分名称”错误是由于 MySQL ODBC 驱动程序。您不能使用 dotted 切换目录/模式 符号。相反,您必须注册另一个 DSN 并链接 您要访问的不同目录的服务器。确定并且 遵循示例查询中记录的三点表示法。
【讨论】:
使用这个有一个重点:
SELECT * FROM [Linked_Server]...[db_name.table_name]
你必须继续
链接服务器->提供程序-> MSDASQL:
并确保这三个选项已被选中
【讨论】:
这个解决方案非常适合查询小表,但它似乎不使用索引,因此从大表中获取很少的行,即使是通过远程服务器上索引的字段也需要很长时间。
所以 - 如果我错了,请纠正我 - 对于大型数据集,最好使用 OPENQUERY,因为查询是在远程服务器上评估和优化的,使用索引等等。
【讨论】:
如果有人仍然遇到这个问题...我必须进入链接服务器属性 -> 服务器选项并将 RPC 和 RPC Out 更改为 true。然后我可以像这样运行 [链接服务器]...[表]
【讨论】: