Temos 3 instâncias do SQL Server 2012, 2 delas não são db_owner
. Alguns de nossos procedimentos armazenados usam DMV e sys
visualizações e procedimentos armazenados que só funcionam quando executados localmente.
Eu gostaria de centralizar a execução desses (nossos) procedimentos armazenados em nossa instância principal e, a partir dela, executar esses procedimentos armazenados remotamente. Tentei usar trabalhos do SQL Server Agent, mas requer alguma configuração que não me sinto confortável em fazer e provavelmente não terei acesso de qualquer maneira.
Existe alguma maneira de executar remotamente um procedimento armazenado, de preferência usando o servidor vinculado?
Edit: podemos usar o servidor vinculado, openrowset
, qualquer coisa que possa ser executada dentro do SQL simples. Prefiro não usar o SSIS, porque isso separaria parte do processo do SQL simples e exigiria várias plataformas para executá-lo.
Supondo que o procedimento resida no servidor remoto: você tentou usar o comando EXECUTE AT?
Isso é o que eu usei com sucesso no passado. Eu costumo cercar o declare/exec em uma tentativa de captura apenas por precaução, mas atualmente está funcionando em meus sistemas a cada hora.
Parece um trabalho para o SSIS. Configure um pacote SSIS e use o
Execute SQL Task
para executar seus procedimentos armazenados. Você pode então executar os pacotes SSIS por meio de trabalhos do Agente.Encontrei este tópico ao pesquisar "executar procedimento no servidor vinculado". mas meu requisito é executar o mesmo procedimento que está disponível em vários servidores, e criei o seguinte, que pode ajudar você ou outros usuários:
Para responder à sua pergunta de maneira mais simples: para usar o nome de 4 partes para executar a consulta remota:
Exec ('linkedservername.DBName.dbo.ProcedureName') ;
A consulta a seguir pode ser usada para executar o procedimento no servidor vinculado (não limitado a um) visando vários servidores vinculados que estão disponíveis no servidor central (de onde este script é executado):