数据库跨库查询问题

wkstz 2013-06-19 10:03:21
将远程服务器添加到本地后,查询表数据成功
SELECT TOP 100 * FROM [服务器].[数据库].[dbo].[表1]

若是将对象“表”更换成“函数”Function():
SELECT TOP 100 * FROM [服务器].[数据库].[dbo].[Function()]

便有以下出错提示:
链接服务器 "数据库" 的 OLE DB 访问接口 "SQLNCLI" 不包含表 ""数据库"."dbo"."Function()""。该表不存在,或者当前用户没有访问该表的权限。

请问这该怎么处理?
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wkstz 2013-06-19
  • 打赏
  • 举报
回复
权限设置了没效果。 用OPENQUERY的话,提示: 链接服务器"服务器"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "无法完成延迟准备。"。 消息 8180,级别 16,状态 1,第 1 行 未能准备语句。 消息 7202,级别 11,状态 2,第 1 行 在 sysservers 中找不到服务器 '服务器'。请执行 sp_addlinkedserver 将该服务器添加到 sysservers。 可是,sys.servers已经把服务器添加进去了,好奇怪啊。
nzperfect 2013-06-19
  • 打赏
  • 举报
回复
不支持,只能 OPENQUERY
唐诗三百首 2013-06-19
  • 打赏
  • 举报
回复
估计是linkserver的帐号没权限访问这个函数吧? 检查一下权限设置咯.
Mr_Nice 2013-06-19
  • 打赏
  • 举报
回复
引用 2 楼 wkstz 的回复:
[quote=引用 1 楼 OrchidCat 的回复:]
select [服务器].[数据库].[dbo].[Function()]
不行啊,把表直接换成函数,就是提示 “该表不存在,或者当前用户没有访问该表的权限。”[/quote]
SELECT * FROM  OPENQUERY([linkserver],'SELECT TOP 100 * FROM [服务器].[数据库].[dbo].[Function()]')
wkstz 2013-06-19
  • 打赏
  • 举报
回复
引用 1 楼 OrchidCat 的回复:
select [服务器].[数据库].[dbo].[Function()]
不行啊,把表直接换成函数,就是提示 “该表不存在,或者当前用户没有访问该表的权限。”
Mr_Nice 2013-06-19
  • 打赏
  • 举报
回复
select [服务器].[数据库].[dbo].[Function()]
wkstz 2013-06-19
  • 打赏
  • 举报
回复
找到原因了,诗语句写的有问题。 SELECT * FROM OPENQUERY([服务器],'SELECT TOP 100 * FROM [数据库].[dbo].Function()') 后面那句服务器不要加,函数名不要加中括号,就可以了。 谢谢大家。
shugeer 2013-06-19
  • 打赏
  • 举报
回复
同意4楼~~·

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧