I recently was doing some development on my local machine and needed to pull data from a linked server. I set up the linked server and everything was working great. Executing queries to pull the data to my machine was fine, but a problem arose when I needed to execute a stored procedure from the other server.
First of all, to call a stored procedure from a linked server you need to use a four part qualifier.EXEC ServerName.DatabaseName.Owner.StoredProcedure PARAMETERSUsing AdventureWorks2008 on the server MYPROD would look like this:EXEC MYPROD.AdventureWorks2008.dbo. uspGetBillOfMaterials 1, ‘01/01/2008’
The error I ran into when I tried to execute the stored procedure was this: ‘Server 'SERVERNAME' is not configured for RPC.’ There could be a couple of issues with this. The easiest one to check is to see if the linked server was configured to allow RPC. If you open the linked server properties and go to the Server Options tab, there is an option for RPC and RPC Out. RPC Out needs to be set to True in order to execute a stored procedure that is stored on the linked server. RPC allows stored procedure call from the linked server whereas RPC Out allows stored procedure calls to go out to the linked server.
The other thing to check is if the server is even configured to allow RPC. To check this run sp_helpserver and it will display a list of settings in the STATUS column. If you do not see RPC, RPC Out listed there they are not enabled and setting your linked server up correctly won’t help the situation any. If they are not listed and you would like to enable them the following commands will do that. Again, using our MYPROD server example:exec sp_serveroption @server='MYPROD', @optname='rpc', @optvalue='TRUE'exec sp_serveroption @server='MYPROD', @optname='rpc out', @optvalue='TRUE'
From now on, as long as everything is configured correctly, you will be able to execute stored procedures to and from linked servers.