none
Problemas ao criar Linked Server - "The semaphore timeout period has expired" RRS feed

  • Pergunta

  • Prezados, boa noite.

    Estou com um problema na criação de um Linked Server, no SQL Server 2008. Tento criar um servidor vinculado a um outro servidor dentro da nossa rede, da empresa onde trabalho. Ao criar, o SQL Server local, onde crio o Linked Server, me envia o seguinte erro:

    "TCP Provider: The semaphore timeout period has expired"

    Segue o print da mensagem de erro completa e das telas de configuração:

    Caso precisem de mais alguma informação, estou a disposição. Um grande abraço!

    segunda-feira, 23 de fevereiro de 2015 21:46

Respostas

Todas as Respostas

  • Ivan,

    Antes de configurar o linkedserver é necessário verificar como está configurada sua rede. Isto porque este erro ocorre normalmente por problemas de comunicação entre um ou mais servidores, tornando as conexões de sua rede intermitentes.

    O KB abaixo pode auxiliar você à detectar este problema de configuração:

    http://support.microsoft.com/kb/325487

    Assim que o ambiente estiver estável, você poderá configurar seu linkedserver, preferencialmente utilizando um "login" SQL Authentication.

    Para criar um linkedserver, utilize o script T-SQL abaixo:

    EXEC sp_addlinkedserver   
       @server=N'TESTE', 
       @srvproduct=N'',
       @provider=N'SQLNCLI', 
       @datasrc=N'SeuServidor\SuaInstancia';
    GO
    sp_addlinkedsrvlogin @rmtsrvname ='TESTE', @useself = 'FALSE', @locallogin = null, @rmtuser ='SeuUsuario', @rmtpassword = 'SuaSenha'
    GO
    


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 24 de fevereiro de 2015 11:14
    Moderador
  • Então, eu consigo me conectar remoto da minha estação para o servidor, via TS, e acessar o banco de dados.

    Seguem os dados de conexão:

    A autenticação foi criada como Windows Autentication.

    terça-feira, 24 de fevereiro de 2015 16:31
  • Eu executei assim:

    EXEC sp_addlinkedserver   
       @server=N'TESTE', 
       @srvproduct=N'',
       @provider=N'SQLNCLI', 
       @datasrc=N'ELSRIOSQLP001\NAVISION_HMLG';
    GO
    sp_addlinkedsrvlogin @rmtsrvname ='TESTE', @useself = 'FALSE', @locallogin = null, @rmtuser ='fun-scielsriosql001', @rmtpassword = 'xxxxx'
    GO

    E a resposta foi:


    • Editado ivan_castro terça-feira, 24 de fevereiro de 2015 16:46 correção do script
    terça-feira, 24 de fevereiro de 2015 16:35
  • Eu executei assim:

    EXEC sp_addlinkedserver   
       @server=N'TESTE', 
       @srvproduct=N'',
       @provider=N'SQLNCLI', 
       @datasrc=N'ELSRIOSQLP001\NAVISION_HMLG';
    GO
    sp_addlinkedsrvlogin @rmtsrvname ='ELSRIOSQLP001', @useself = 'FALSE', @locallogin = null, @rmtuser ='fun-scielsriosql001', @rmtpassword = 'Oxford10'
    GO

    E a resposta foi:

    Msg 15015, Level 16, State 1, Procedure sp_addlinkedsrvlogin, Line 49
    The server 'ELSRIOSQLP001' does not exist. Use sp_helpserver to show available servers.

    Ivan,

    Ocorreu esta mensagem de erro porque você mudou o vínculo para o linkedserver. Se realmente não há como utilizar o linkedserver com SQL Authentication, tenha certeza que este usuário tem acesso à ambos os servidores.

    Segue abaixo a alteração apenas para definição do acesso para seu ambiente:

    sp_addlinkedsrvlogin @rmtsrvname ='TESTE'
    , @useself = 'true' 
    , @locallogin = 'SCIENCE\fun-scielsriosql001'
    GO
    O seu linkedserver "TESTE" já foi criado usando "sp_addlinkedserver", basta executar este script para definir quem é o usuário deste acesso.


    Para maiores informações veja:

    https://technet.microsoft.com/pt-br/library/ms189811%28v=sql.105%29.aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 24 de fevereiro de 2015 17:05
    Moderador
  • Então, eu havia deletado o linked server anterior. Fiz novamente com suas alterações:

    EXEC sp_addlinkedserver   
       @server=N'TESTE', 
       @srvproduct=N'',
       @provider=N'SQLNCLI', 
       @datasrc=N'ELSRIOSQLP001\NAVISION_HMLG';
    GO
    sp_addlinkedsrvlogin @rmtsrvname ='TESTE', @useself = 'TRUE', @locallogin = null, @rmtuser ='SCIENCE\fun-scielsriosql001', @rmtpassword = 'xxxxx'
    GO

    E a resposta foi a mesma após efetuar um Test Connection:

    Desde já, lhe agradeço a atenção que vem me dando. 

    Tem algum teste que eu possa fazer para verificar se é permissão de acesso?

    terça-feira, 24 de fevereiro de 2015 17:14
  • Então, eu havia deletado o linked server anterior. Fiz novamente com suas alterações:

    EXEC sp_addlinkedserver   
       @server=N'TESTE', 
       @srvproduct=N'',
       @provider=N'SQLNCLI', 
       @datasrc=N'ELSRIOSQLP001\NAVISION_HMLG';
    GO
    sp_addlinkedsrvlogin @rmtsrvname ='TESTE', @useself = 'TRUE', @locallogin = null, @rmtuser ='SCIENCE\fun-scielsriosql001', @rmtpassword = 'xxxxx'
    GO

    E a resposta foi a mesma após efetuar um Test Connection:

    Desde já, lhe agradeço a atenção que vem me dando. 

    Tem algum teste que eu possa fazer para verificar se é permissão de acesso?

    Ivan,

    O erro de semáforo você só vai corrigir ajustando sua rede como indicado no KB:

    http://support.microsoft.com/kb/325487

    Com relação ao linkedserver para Windows Authentication, você deve executar exatamente como foi indicado, segue novamente o script completo:

    EXEC sp_addlinkedserver   
       @server=N'TESTE', 
       @srvproduct=N'',
       @provider=N'SQLNCLI', 
       @datasrc=N'ELSRIOSQLP001\PIX_PRODUCAO';
    GO
    
    sp_addlinkedsrvlogin @rmtsrvname ='TESTE'
    , @useself = 'true' 
    , @locallogin = 'SCIENCE\fun-scielsriosql001'
    GO
    Reforçando, o usuário deve possuir acesso em ambos os servidores pelo Domínio.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"


    • Editado Durval RamosModerator terça-feira, 24 de fevereiro de 2015 17:23 Alterado instância do servidor
    terça-feira, 24 de fevereiro de 2015 17:21
    Moderador
  • Então, executei o script acima e também não consegui.

    Referente ao KB, o primeiro passo foi o ping, que retornou resposta:

    Disparando ELSRIOSQLP001.science.regn.net [10.47.59.25] com 32 bytes de dados:
    Resposta de 10.47.59.25: bytes=32 tempo=1ms TTL=126
    Resposta de 10.47.59.25: bytes=32 tempo=1ms TTL=126
    Resposta de 10.47.59.25: bytes=32 tempo=1ms TTL=126
    Resposta de 10.47.59.25: bytes=32 tempo=1ms TTL=126
    Resposta de 10.47.59.25: bytes=32 tempo=1ms TTL=126

    Estatísticas do Ping para 10.47.59.25:
        Pacotes: Enviados = 5, Recebidos = 5, Perdidos = 0 (0% de
                 perda),
    Aproximar um número redondo de vezes em milissegundos:
        Mínimo = 1ms, Máximo = 1ms, Média = 1ms

    Os outros passos eu apresentei ao responsável pela infra estrutura da empresa e me informou não haver problema.

    UPDATE 

    O login do Windows da minha estação e o do servidor são diferentes.


    • Editado ivan_castro terça-feira, 24 de fevereiro de 2015 20:12
    terça-feira, 24 de fevereiro de 2015 20:09
  • Ivan,

    Vale ressaltar que o Ping não é um commando que garante performance, mas sim que existe uma possível troca de dados entre a origem e o destino.

    Você disse que o login da sua máquina é diferente do servidor, perfeito, tem que ser assim mesmo, mas neste caso para usar a sua conta de usuário do Windows no SQL Server, será necessário adicionar o seu login com uma conta de login no SQL Server.

    Sobre esta trabalhando em uma rede com domínio?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 25 de fevereiro de 2015 14:28
    Moderador
  • Não entendi a pergunta Junior.

    Eu consegui um login SQL Autentication, mas mesmo assim também não deu certo. O problema foi o mesmo.

    quinta-feira, 26 de fevereiro de 2015 18:18
  • Ivan,

    Estou perguntando se a sua estrutura de rede possui um Servidor fazendo uso do Active Directory? Saberia me dizer como esta a configuração de DNS?

    Você já verificou a configuração de protocolos de rede que estão habilitados neste servidor SQL Server?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 27 de fevereiro de 2015 15:27
    Moderador
  • Falei com um dos funcionários de Infra, e ele me informou que sobre o Active Directory, eles usam alguns recursos. DNS e protocolos de rede não sabe informar. Provavelmente somente o analista Senior de infra ou o pessoal da Holanda, que é quem configura a rede da empresa.
    quarta-feira, 4 de março de 2015 14:00
  • Ivan,

    Seria muito importante entender a configuração da rede e seus respectivos recursos para que possamos tentar alinhar as necessidades do SQL Server!!!


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 5 de março de 2015 13:42
    Moderador
  • Pessoal, desculpe a falta de retorno, pois suspenderam este projeto, e agora estou de volta nele.

    Este erro continua dando, porém somente ao acessar a instancia de homologação.

    Tenho 3 situações:

    1) Do meu banco local(1) -> banco remoto (instancia de homologação(2)): Dá o erro descrito.

    2) Do meu banco local(1) -> banco remoto (instancia de produção(3)): Linked Server criado com sucesso(!).

    3) Conectei o banco de produção(3) localmente, na minha estação com sucesso, e daí sim consegui criar o linked server com a instancia de homologação(2).

    Já verifiquei o usuário, mas parecem estar exatamente iguais os do banco (2) e (3).

    terça-feira, 24 de março de 2015 21:42
  • Ivan,

    Você já tentou configurar na guia de segurança do Linked Server o uso de Impersonate?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 25 de março de 2015 15:35
    Moderador
  • Ivan,

    Você já tentou configurar na guia de segurança do Linked Server o uso de Impersonate?


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    Oi Pedro, ainda não tentei ois não sei o que significa.
    quinta-feira, 26 de março de 2015 16:47
  • Ivan,

    Veja esta imagem ajuda:


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 28 de março de 2015 19:15
    Moderador
  • Pedro, segue a configuração e o erro:

    segunda-feira, 30 de março de 2015 20:49
  • Ivan_Castro,

    O usuário que você esta especificando deve existir no servidor Oracle!!!

    Faça um teste, especifique o usuário do Oracle na opção Be Made using this security context, e remova o login que esta informado no impersonate.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quarta-feira, 1 de abril de 2015 14:39
    Moderador
  • Junior, os dois servidores são SQL Server.
    quarta-feira, 1 de abril de 2015 23:02
  • Ivan,

    Então meu caro colega, o que importa é ter o usuário em ambos os servidores.


    Pedro Antonio Galvao Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 2 de abril de 2015 18:01
    Moderador
  • Galera, consegui resolver, com ajuda do setor de Infra. O problema estava na configuração de TCP/IP do servidor criado. 
    segunda-feira, 6 de abril de 2015 14:59