IDENTITY_INSERT não funciona com servidores vinculados AFAIK, a menos que você execute SQL dinâmico que inclua o SET IDENTITY_INSERT no lote ou ter algum código (Stored Proc, por exemplo) no servidor remoto que faz isso para você. O
IDENTITY_INSERT é por sessão (consulte MSDN
) e quando você usar o servidor remoto provavelmente estará em uma sessão diferente da sua instrução executada via [LINKEDSERVER].tempdb.sys.sp_sqlexec , o que faz com que ele falhe conforme você vê isso acontecendo.