We currently execute a stored procedure against a linked server using:
EXECUTE [LinkedServer].[DatabaseName].[dbo].[MyProcedure]
For example:
Well, when you're right you're right, whether it's documented or not. Setting remote access to 0 (and restarting) causes remote stored procedure calls using four-part syntax to fail, even though all the documentation suggests it should not fail for linked servers. This is true even on the most recent build of SQL Server 2017 (RTM CU12), so this is not version specific. It's not clear if this is a real restriction, or if the code is just buggy and blocking it based on the remote access feature check even though it would technically work.
Queries involving four-part names (SELECT * FROM server.db.scheme.table) will not fail, presumably because this only works for linked servers and never involved remote access in the first place.
As a workaround, you can change the call to use EXECUTE .. AT:
EXEC ('EXECUTE CRM.dbo.GetCustomer 619') AT Screwdriver
This works as long as the linked server has the RPC Out option enabled (which it will be by default if added by sp_addlinkedserver with no special options).
Unfortunately EXECUTE .. AT is much less convenient when parameters are involved, because it only supports the ? syntax:
EXEC ('EXECUTE CRM.dbo.GetCustomer @Customer=?', 619) AT Screwdriver
The parameter name is optional here, but I'd strongly recommend using it to keep things predictable. Same with EXECUTE -- it's optional, but it makes it clear that we're really running an arbitrary query, not just calling the stored procedure.
If your procedure has OUTPUT parameters, this plain will not work; EXECUTE .. AT isn't clever enough for that. You can specify OUTPUT in the call, but the value will not be copied back. Workarounds for that are beyond the scope of this answer, but they won't be pretty.
It may be worth opening a suggestion for this, because it seems like the sort of thing that really ought to work as documented (and if Microsoft ever wants to get permanently rid of remote access, they'll need to anyway).