查询链接服务器上表的T-SQL语句报语法错误,问题出在哪里?
问题排查与解决方案
错误原因
sp_columns 系统存储过程不支持直接传入包含链接服务器的四段式全限定名作为首个位置参数,因此直接传入[Server IP].[Database Name on linked Server].dbo.[Table1]会触发语法错误。
可行解决方法
方法1:使用sp_columns的显式命名参数
sp_columns 本身提供了对应链接服务器、数据库、Schema的专用参数,按如下格式传入即可:
USE [MyDatabase] EXEC sp_columns @table_name = N'Table1', @table_owner = N'dbo', @table_qualifier = N'[Database Name on linked Server]', @table_server = N'[你的链接服务器名称]'
注意:
@table_server参数填你在本地SQL Server中配置的链接服务器的别名,不是直接填IP,除非你创建链接服务器的时候别名就是IP。
方法2:通过OPENQUERY在链接服务器侧执行查询
直接通过OPENQUERY把查询请求发送到链接服务器本地执行sp_columns,语法如下:
USE [MyDatabase] SELECT * FROM OPENQUERY( [你的链接服务器名称], 'EXEC [Database Name on linked Server].dbo.sp_columns N''Table1'', N''dbo''' )
注意事项
- 首先确认本地SQL Server的链接服务器配置正常,当前登录账号拥有目标链接服务器对应库表的查询权限
- 所有包含空格、特殊字符的名称都需要用方括号包裹
内容的提问来源于stack exchange,提问作者user3115933
相关产品推荐
相关产品推荐

