none
como usar sp em linked server? RRS feed

  • Pergunta

  • Ola!

    Eu estou precisando dropar, criar e inserir dados de um servidor no outro! Criei uma sp q faz isso! Mas como eu executo uma sp de um linked server no outro??

    vlw!

    segunda-feira, 16 de julho de 2007 14:42

Respostas

  •  

    Olá Filippi,

     

    Basta chamar a SP pelo nome totalmente qualificado, ou seja, desta forma:

    Code Snippet

     

    EXEC NomeDoServidor.Database.Proprietário.NomeDaSP @Parâmetros....

     

    Além disso é preciso estar certo de que o usuário do Linked Server tem a permissão de executar a SP.

     

     

    Qualquer dúvida, retorne.

     

     

    Abraço

    segunda-feira, 16 de julho de 2007 14:46
  • e nao esquecer do MSDTC ativo.

     

    Abs;

    segunda-feira, 16 de julho de 2007 15:03
  •  

    Filippi,

     

    Eu imagino que você esteja usando SQL 2000, me corrija se estiver errado. Além disso, possivelmente você esteja criando as procedures dentro do Enterprise Manager. Neste caso, o problema está relacionado a duas opções que devem estar ativadas quando fazemos acesso a um servidor remoto via linked server, são ela ANSI_NULLS e ANSI_WARNINGS. Se você criar a procedure via Query Analyzer, este problema deve não acontecer pois nele estas opções são definidas automaticamente, enquanto que no Enterprise não.

     

    Detalhe, estas opções são gravadas nas propriedades internas do objeto! Ou seja, o mais prático é você excluir a SP e criar novamente no Query Analyzer.

     

    Sobre os comandos que podemos executar, realmente, comando ALTER/CREATE/DROP não podem ser usados.

     

     

    Bom, se não for SQL 2000, não vai servir muito pra ti o que eu escrevi, então, teremos que analisar melhor sua situação.

     

     

    Abraço

    terça-feira, 17 de julho de 2007 04:18

Todas as Respostas

  •  

    Olá Filippi,

     

    Basta chamar a SP pelo nome totalmente qualificado, ou seja, desta forma:

    Code Snippet

     

    EXEC NomeDoServidor.Database.Proprietário.NomeDaSP @Parâmetros....

     

    Além disso é preciso estar certo de que o usuário do Linked Server tem a permissão de executar a SP.

     

     

    Qualquer dúvida, retorne.

     

     

    Abraço

    segunda-feira, 16 de julho de 2007 14:46
  • e nao esquecer do MSDTC ativo.

     

    Abs;

    segunda-feira, 16 de julho de 2007 15:03
  • Eu coloquei assim ele deu o seguinte erro!

     

    Server: Msg 7201, Level 17, State 4, Line 1
    Could not execute procedure on remote server 'AINFO3' because SQL Server is not configured for remote access. Ask your system administrator to reconfigure SQL Server to allow remote access.

    Como eu poderia modificar isso para que funcione?

    segunda-feira, 16 de julho de 2007 15:06
  •  

    Muito bem lembrado Marcelo.

     

    Abraço

    segunda-feira, 16 de julho de 2007 15:06
  •  

    Filippi,

     

     

    Verifique no seu servidor a configuração do parâmetro "remote access".

     

    Execute:

    sp_configure

     

    E verifique se está 1 ou 0, se estiver 0, execute:

     

    sp_configure 'remote access', 1

     

     

    Abraço

    segunda-feira, 16 de julho de 2007 15:10
  • Pior q ja fiz isso! nos 2 servidores! E continua com o erro! Vlw ae!
    segunda-feira, 16 de julho de 2007 15:19
  •  

    Filippi,

     

    Esqueci de um detalhe, depois de rodar o sp_configure, execute:

     

    RECONFIGURE WITH OVERRIDE

     

     

    Vai aplicar a configuração.

     

    Se ainda continuar o problema, retorne

     

     

    Abraço

    segunda-feira, 16 de julho de 2007 15:22
  • o retorno da sp sp_configure saio assim:

     

    remote access 0 1 1 1

     

    Ja executei o comando


    RECONFIGURE WITH OVERRIDE

     

    e nada! vlw!!

    segunda-feira, 16 de julho de 2007 15:28
  •  

    Filippi,

     

    Você está conseguindo acessar o segundo servidor pelo linked server??

     

    Tente executar um simples SELECT:

     

    SELECT * FROM ServidorRemoto.Database.Owner.Tabela

     

    Além disso, no servidor de origem, vá até o linked server, e abra suas propriedades. Verifique se na guia Server Options está marcada a opção Data Access. Ela deve permanecer marcada.

     

     

    Abraço

     

    segunda-feira, 16 de julho de 2007 15:41
  • O select, insert e etc funciona! Já testei Sad
    Mas o uso de sp e drop table e create table não funcionam! Eu criei um usuario e dei todas as permissões a ele! A opção data access ta marcada assim como o RTP e RTP out.


    vlw!
    segunda-feira, 16 de julho de 2007 19:46
  •  

    Filippi,

     

    Eu imagino que você esteja usando SQL 2000, me corrija se estiver errado. Além disso, possivelmente você esteja criando as procedures dentro do Enterprise Manager. Neste caso, o problema está relacionado a duas opções que devem estar ativadas quando fazemos acesso a um servidor remoto via linked server, são ela ANSI_NULLS e ANSI_WARNINGS. Se você criar a procedure via Query Analyzer, este problema deve não acontecer pois nele estas opções são definidas automaticamente, enquanto que no Enterprise não.

     

    Detalhe, estas opções são gravadas nas propriedades internas do objeto! Ou seja, o mais prático é você excluir a SP e criar novamente no Query Analyzer.

     

    Sobre os comandos que podemos executar, realmente, comando ALTER/CREATE/DROP não podem ser usados.

     

     

    Bom, se não for SQL 2000, não vai servir muito pra ti o que eu escrevi, então, teremos que analisar melhor sua situação.

     

     

    Abraço

    terça-feira, 17 de julho de 2007 04:18
  • Funcionou! Fiz oq vc falou e criei a sp no query analyzer e funcionou perfeitamente apesar de ser sql2000,

     

    Vlw, Obrigado pela força!

    terça-feira, 17 de julho de 2007 11:30
  •  

    Que bom!

     

    Eu tinha passado por esse problema a algum tempo também. São alguns pequenos detalhes que acabam ferrando todo esquema.

    terça-feira, 17 de julho de 2007 12:46
  • Pd crer! O problema é o tempo que se perde nessas coisas! Mas ... faze oq neh! hehehe! Peloumenos funciono! hehehe! vlw cara!
    terça-feira, 17 de julho de 2007 13:57