我收到以下错误:Types don't match between the anchor and the recursive part in column "namePath" of recursive query "pathBuilderCte".
我的SQL看起来像这样:
;with pathBuilderCte as
(
select a.id
, cast('root' as nvarchar(max)) namePath
from [linkedServer\Instance].[dbName].dbo.table1 a
inner join [linkedServer\Instance].[dbName].dbo.table2 b on b.aId = a.id
where a.column1 = 'Something'
and b.id = 0
union all
select a.id
, cast(p.namePath + '\\' + cast(a.NAME as nvarchar(max)) as nvarchar(max))
from [linkedServer\Instance].[dbName].dbo.table1 a
inner join [linkedServer\Instance].[dbName].dbo.table2 b on b.aId = a.id
inner join pathBuilderCte p on p.id = b.parentId
where a.column1 = 'Something'
and b.id > 0
)
select * from pathBuilderCte;
仅供参考:Table1.Name
类型为varchar(255)
如果我在链接服务器上运行此SQL本身都可以工作(在CTE的第二部分有或没有强制转换;但只使用模式和表名)。
但是当我在链接服务器上运行它时(使用完整的linkedServer.DB.schema.table语法)我得到了上述错误。
我是否错过了一些明显的东西,或者这可能是一个错误?