【发布时间】:2019-09-30 12:31:56
【问题描述】:
我正在尝试查询链接服务器,当我在 SSMS 中展开对象资源管理器时,我可以看到服务器上的所有数据库以及各个数据库中的所有表,但无法展开以查看列。我也无法运行任何带有以下错误的查询:
1 - 如果我右键单击表名并单击脚本表作为 - 选择到 - 新查询窗口,我会收到以下错误
[LinkedServerName].[singhm]..[testtable] 不包含可以选择的列,或者当前用户没有对该对象的权限。
2 - 如果我按如下方式运行 openquery 语句:
select *
from openquery(LinkedServerName ,'select * from [singhm]..[testtable]')
我收到以下错误:
无法初始化 OLE DB 提供程序“MSDASQL”的数据源对象 对于链接服务器“LinkedServerName”。
出于上下文目的,我的链接服务器是与 MySQL 数据库数据源的 ODBC 连接。
如果您能就此问题提供任何建议和/或指导,我将不胜感激。
非常感谢, 曼帕尔·辛格
【问题讨论】:
-
那么,您正在尝试使用 MSDASQL 创建链接服务器连接到 MySQL 数据库?
-
@Brian - 添加链接服务器时,遵循/参考多个在线教程,我没有将服务器指向任何特定的提供者,但所有教程都提到了我所做的配置 MSDASQL。我创建了一个 ODBC 适配器并连接到一个连接到 MySQL 数据源的 ODBC dsn。它在 excel 中连接良好,我可以在 excel 中从 ODBC 获取数据,因此连接正在为此工作。当尝试在 SSMS 中做同样的事情时,连接已建立,即如果我测试连接,它可以工作,我可以看到所有数据库和表,但无法展开以查看列。
-
哦,没错 - MSDASQL 是“用于 ODBC 驱动程序的 OLE DB 提供程序”。抱歉 - 已经有一段时间了。恐怕我这里没有别的东西了。
-
@Brian 事实证明,我需要安装不同的 odbc 提供程序。 download.cnet.com/ODBC-NET-Data-Provider/… 。我现在可以使用以下语法查询链接服务器。 select top 10 * from openquery(MYSQL,'select * from singhm.testtable') .
-
将其写为答案并接受它 - 这样其他遇到此问题并在此处搜索解决方案的人会找到它。
标签: mysql sql-server tsql linked-server