THROWcommand is non-terminating if it is used in a stored procedure over a linked-server.
I don’t know the details to why it works this way. The
THROWcommand returns an error message with a severity level of 16, which, according to my RAISERROR Cheatsheet, does not stop execution.
There’s something special about the
THROWcommand beyond raising an error message. Behind the scenes, there is likely some extra information being passed to tell SQL Server that execution needs to stop in that moment, and that extra bit of information does not appear to be passed between linked servers.
Click through for a demo.