CTE类型使用链接服务器时不匹配错误

时间:2014-01-30 18:42:06

标签: sql-server-2008 casting common-table-expression linked-server

我收到以下错误: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语法)我得到了上述错误。

我是否错过了一些明显的东西,或者这可能是一个错误?

0 个答案:

没有答案