IDENTITY_INSERT ne fonctionne pas avec les serveurs liés AFAIK, sauf si vous exécutez SQL dynamique qui inclut le SET IDENTITY_INSERT dans le lot ou avoir du code (Stored Proc par exemple) sur le serveur distant qui le fait pour vous.
Le IDENTITY_INSERT est par session (voir MSDN
) et lorsque vous utilisez le serveur distant, ce sera probablement dans une session différente de votre instruction exécutée via [LINKEDSERVER].tempdb.sys.sp_sqlexec , ce qui le fait échouer lorsque vous le voyez se produire.