openquery有什么特别的用法吗,在字符串中表示变量

问题遇到的现象和发生背景

语法报错,网上说字符串中的变量以'''+@para+'''在字符串中表示,感觉没问题,还是openquery特殊呢?

问题相关代码,请勿粘贴截图

declare @tagName char(30)
set @tagName = '内河侧水位'
select *from openquery(HH2,'select TOP 1 * from water.rawdata where TAGNAME ='''+@tagName+'''')

运行结果及报错内容

Msg 102, Level 15, State 1, Line 5
Incorrect syntax near '+'.

我的解答思路和尝试过的方法

不用openquery就没问题
go
Create Procedure Test
@TestID int
As
Declare @s nvarchar(800)
Set @s='select TOP 1 * from water.rawdata where TAGNAME ='''+@TestID+''''
print @s
exec(@s)
go

我想要达到的结果

咋办啊

img