IDENTITY_INSERT fungerar inte med länkade servrar AFAIK, om du inte kör dynamisk SQL som inkluderar SET IDENTITY_INSERT i batchen eller ha någon kod (t.ex. lagrad proc) på fjärrservern som gör det åt dig.
IDENTITY_INSERT är per session (se MSDN
) och när du använder fjärrservern kommer detta förmodligen att vara i en annan session än din sats som körs via [LINKEDSERVER].tempdb.sys.sp_sqlexec , vilket gör att det misslyckas när du ser det hända.