none
Erro de acesso SQL Server 2005 RRS feed

  • Pergunta

  • Olá a todos!!!

    Estou com um problema de acesso em um servidor. Criei um login, mapiei-o em um database criando o usuário e dei acesso de leitura, escrita, etc.
    De dentro do servidor consigo logar, de fora não consigo, mas isso só acontece para usuários novos que estou criando, os antigos estão acessando normalmente. Um detalhe é que, se coloco este usuário como sysadmin, ele acessa de fora normalmente mas, de outra forma não acessa. Outra coisa interessante, é que retorna o erro falha de login mas, o usuário e senha estão corretos.

    Login failed for user 'pp'. (.Net SqlClient Data Provider)

    Server Name: 172.20.22.20
    Error Number: 18456
    Severity: 14
    State: 1
    Line Number: 65536

    Já verifiquei os protocolos, acessos, permissões e não consegui encontrar a causa. Podem me ajudar???

    []´s

    Paulo Henrique.
    terça-feira, 31 de março de 2009 13:07

Respostas

Todas as Respostas

  • Boa Noite,

    Se a mensagem é login failed significa que a rede está ok, o firewall está ok, os protocolos estão ok e as portas estão ok, pois, é necessário consultar o SQL Server para verificar se o login é válido e se há um retorno dizendo que ele não é válido então a comunicação está correta.

    Qual é o seu SQL Server ?

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com/

    OUTER JOIN com mais de duas tabelas ? Será que está mesmo “certo” ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!514.entry


    Classifique as respostas. O seu feedback é imprescindível
    terça-feira, 31 de março de 2009 14:32
  • Bom Dia,

    Se as senhas estão de fato corretas faça um teste com outro aplicativo (pode ser um ODBC, o SQLCMD, etc).
    Se o problema persistir, veja se os novos logins possuem direito de utilizar o EndPoint (TSQL Default TCP).

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com/

    OUTER JOIN com mais de duas tabelas ? Será que está mesmo “certo” ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!514.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta phscuritiba quinta-feira, 2 de abril de 2009 17:45
    terça-feira, 31 de março de 2009 14:58
  • Olá Gustavo,

    o primeiro teste eu já fiz e também não dá certo. O user e pass estão corretos, isso acontece pra qualquer novo login, só passa com acesso de "sysadmin" como informei acima. Por gentileza,  como faço o segundo que você informou???

    []´s

    terça-feira, 31 de março de 2009 18:15
  • Obrigado pela atenção e ajuda pessoal!!!

    Um amigo (Laerte Junior LPJ) me deu uma ajuda aqui, me passou um comando que resolveu o problema.

    GRANT CONNECT ON ENDPOINT::[TSQL Default TCP] to [public]

    []´s
    quarta-feira, 1 de abril de 2009 01:28
  • Vale dizer que foi com a idéia do Gustavo (ENDPOINT), depois de tentarmos todos os passo conhecidos, que resolvemos o problema. Foi dado o comando porque foi criado um outro endpoint e assim foi revogado a permissão pro public no default

    Agora Gustavo, poderia dar uma explicação melhor disso cara ?...o porque se criaria um outro endpoint ?..etc...

    E qual seria a melhor solução, dar este grant ou dropar o outro endpoint....
    Junior
    quarta-feira, 1 de abril de 2009 01:37
  • Olá LPJ,

    Obrigado por me ajudar. Respondi essa Thread e logo algumas horas depois tive um problema de saúde e acabei me ausentando. Vamos às explicações:

    A partir do SQL Server 2005 foi introduzido o conceito de EndPoints que são pontos de comunicação. Não que eles não existissem antes mas não existiam formalmente e foram incorporados ao SQL Server (a idéia vem dos concorrentes). No SQL Server 2005 houve uma segmentação dos pontos de comunicação. Ao invés de escutar todo e qualquer tipo de tráfego, o SQL Server 2005 segmentou os tipos de tráfegos e respectivas portas em Endpoints.

    Assim sendo temos EndPoints específicos para database mirroring, endpoints específicos para comandos TSQL, endpoints específicos para Service Broker, etc. Essa segmentação obedece a iniciativa Trusthworth Computing da Microsoft, ou seja, Secure By Default. Um EndPoint TSQL por exemplo jamais irá aceitar uma requisição destinada ao mecanismo de Mirroring, assim como um EndPoint de Service Broker não aceitará uma requisição de um WebService no SQL Server.

    Para tornar as coisas ainda mais seguras, apenas o EndPoint TSQL Default TCP é habilitado por padrão, ou seja, ao instalar o SQL Server esse EndPoint sempre estará disponível. Novos EndPoints não estão disponíveis por padrão. É necessário habilitá-los (a menos que o usuário seja SysAdmin).

    O que acredito que tenha acontecido é que alguém viu o EndPoint TSQL Default TCP com permissão na Role Public e deve ter achado que era um problema de segurança (embora não deixe de ter algum sentido). Normalmente não concedemos permissões em nenhum objeto para a role public e provavelmente esse alguém "removeu" a permissão da Role Public. Ao fazer isso ninguém mais (que não os SysAdmins) poderiam utilizar esse EndPoint há menos que houvesse permissões específicas para cada login (o que acredito que a pessoa que removeu também o tenha feito). Até funciona, mas é preciso lembrar do inconveniente de dar o GRANT a cada login criado. Por isso os logins antigos conseguiam e os novos não.

    Respondendo a pergunta: "O por que de se criar um outro EndPoint ?"

    Normalmente em 99% teremos sempre um único EndPoint TSQL (normalmente o Default e na porta 1433), mas o SQL Server nos permite criar outros EndPoints em TSQL. Isso é na verdade mais um luxo do que uma real utilidade. Uma vez que um EndPoint está associado a uma permissão e a uma porta poder-se-á ter uma configuração bastante segmentada. Podemos permitir que apenas determinados logins tenham acesso a um determinado EndPoint e por conseqüência consigam usar uma determinada porta. Imagine uma aplicação no Host X que decida que os usuário do Host Y devam se conectar através da porta 1433 e os usuários do Host Z devam se conectar através da porta 1315 ? Com o EndPoint é possível de fazer essa segmentação, que embora tenha algum sentido, não é muito requerida.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como realizar cálculos com horas no SQL Server – Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!516.entry


    Classifique as respostas. O seu feedback é imprescindível
    sexta-feira, 3 de abril de 2009 19:01
  • Obrigado Gustavo...


    Junior
    sexta-feira, 3 de abril de 2009 19:16
  • Olá Gustavo, muito obrigado pelo esclarecimento e mais uma vez obrigado pela ajuda sua e do Laerte.
    PS. Espero que já tenha melhorado seu estado de saúde.

    []´s

    PH.
    segunda-feira, 6 de abril de 2009 15:18
  • Olá PH,

    Felizmente já recebi alta e já estou aqui contribuindo :)

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como realizar cálculos com horas no SQL Server – Parte I
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!516.entry


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 6 de abril de 2009 16:31
  • Bom Dia,

    Se as senhas estão de fato corretas faça um teste com outro aplicativo (pode ser um ODBC, o SQLCMD, etc).
    Se o problema persistir, veja se os novos logins possuem direito de utilizar o EndPoint (TSQL Default TCP).

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com/

    OUTER JOIN com mais de duas tabelas ? Será que está mesmo “certo” ?
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!514.entry


    Classifique as respostas. O seu feedback é imprescindível

    Gustavo, bom dia!

    Estou tentando auxiliar um colega de faculdade e o caso dele é semelhante em alguns pontos. Mas mesmo adicionando a permissão de SysAdmin, não está conseguindo logar com qualquer usuário SQL. Ele consegue se conectar somente com a autenticação do Windows e nem o usuário SA funciona.

    O que pode ser?

    Abss


    Alex de Figueiredo Siqueira Estudante de Sistemas de Informação e Gerente de TI na área de Desenvolvimento


    • Editado Alex_fsi sábado, 15 de setembro de 2012 14:06
    sábado, 15 de setembro de 2012 14:03