IDENTITY_INSERT non funziona con i server collegati AFAIK, a meno che non si esegua un SQL dinamico che includa SET IDENTITY_INSERT nel batch o avere del codice (Stored Proc per esempio) sul server remoto che lo fa per te.
Il IDENTITY_INSERT è per sessione (vedi MSDN
) e quando utilizzi il server remoto, questo sarà probabilmente in una sessione diversa dalla tua istruzione eseguita tramite [LINKEDSERVER].tempdb.sys.sp_sqlexec , il che provoca il fallimento quando vedi che sta accadendo.