MSSQL并不支持用户自定义函数调用linked server查询,它无法识别链接服务器部分
但我们可以采用其他方式,替换无法被解析的linked server部分内容
1、采用Openquery替代
Select * from Openquery(newsql,'select temptable.dbo.F1(10)')
2、采用sp_executesql替换
exec newsql.temptable.dbo.sp_executesql N'select dbo.F1(@input)',N'@input int',@input=10
3、采用exec AT方式替换
declare @sql varchar(Max),@linked_Srv varchar(75)
set @linked_Srv = 'newsql'
set @sql = 'EXEC(''select temptable.dbo.F1(10)'') AT ' + @linked_Srv
EXEC(@sql)