Criei um procedimento armazenado no ServerA (SQL Server 2019) que insere várias linhas em uma tabela local.
Quando chamo o procedimento armazenado usando OPENQUERY do ServerB (SQL Server 2012), o procedimento é executado, mas as linhas não são inseridas.
Executar a mesma inserção do ServerB com OPENQUERY retorna um erro 7357 (a mensagem de erro real está em francês, informando que o provedor OLE DB "SQLNCLI11" relata que o objeto não possui colunas ou o usuário não tem acesso ao objeto).
Estou usando um servidor vinculado no ServerB com autenticação SQL. O RPC está desabilitado no ServerA, daí o uso de OPENQUERY.
Se eu usar a mesma instrução para inserir usando OPENQUERY em uma sessão SSMS diretamente no ServerA usando as mesmas credenciais do servidor vinculado, funciona - eu havia concedido INSERT a esse usuário na tabela em questão antes de iniciar meus testes.
Realizei atualizações na mesma tabela do servidor vinculado por muitos meses sem problemas.
Na verdade, um INSERT no ServerB usando um nome de 4 partes para a tabela funciona.
Preciso de uma permissão extra para realizar inserções remotamente?
"RPC está desabilitado no ServerA".
RPC e RPC OUT são configurações na definição do servidor vinculado, não no servidor de destino.
Portanto, basta ativar o RPC OUT na definição do servidor vinculado e executar o procedimento armazenado diretamente ou com