none
Ajuda para acessar o banco de dados externo. RRS feed

  • Pergunta

  • Boa tarde galera, estou a 3 dias tentando fazer uma conexão com o banco de dados em um servidor externo mas não consegui  ate agora.

    Tinha criado um tópico na área de c# achando que o problema estava na string de conexão, mas depois de muita discussão mesmo um usuário pediu para que eu criasse um tópico aqui porque provavelmente o problema está na  segurança/permissão.

    Vou explicar mais ou menos o que está acontecendo, no tópico que eu criei na área de c# eu fiz diverso testes, e postei várias prints e informações referente ao sql\ servidor que estou tentando acessar. Pra facilitar o suporte de você recomendo de deem uma breve olhada no tópico pra entender porque chegamos na conclusão que o problema esteja na  segurança/permissao.


    link: 
    https://social.msdn.microsoft.com/Forums/pt-BR/f48c6f85-7b9c-41f5-8813-e1861fb2ba2e/conexo-com-banco-de-dados-no-servidor?forum=vscsharppt#5ae5d08a-bd24-4226-998a-32a8f86abfe6

    agora resumindo, eu estava desenvolvendo um projeto pra minha empresa de um sistema de cadastro e gerenciamento de dados.

    Eu conclui os sistema, mas o banco de dados estava no meu próprio notebook que no caso é o ambiente de desenvolvimento.

    acabei o sistema a 3 dias atrás e comecei tentar fazer agora a conexão com o banco de dados externo que está localizado em um servidor aqui na empresa mesmo.

    é um servidor simples, com windows 10 aonde já instalei o sql e criei a base de dados, inclusive ja dei alguns inserts e o banco no servidor está funcionando normalmente.

    Na minha lógica, após ja ter acesso ao servidor aonde está a base de dados, era só mudar as instancias  da string de conexão para a do banco de dados no servidor.

    a conexão antiga que estava funcionando normalmente aonde o banco esta no meu própio notebook é a seguinte:

            SqlConnection con = new SqlConnection("Data Source = ABES-PC16; Initial Catalog=abesBanco;Integrated Security=SSPI; User ID=ABES-PC16;Password=");
            SqlCommand cmd;
            SqlDataReader reader;

    Depois,  dei um insert no banco de dados no servidor(no qual funcionou normalmente), para cadastrar um usuário do sistema e na tela de login, mudei a string de conexão do banco para testar se eu conseguia acessar o banco de dados do servidor digitando o usuário e senha que dei o insert, só que deu o seguinte erro.


    a string que conexão que gera esse problema é essa:

     SqlConnection con = new SqlConnection(@"server = SERVIDOR2\SOFTWAREBANCO; Database=abesBanco; Integrated Security=true;");
            SqlCommand cmd;

    Chutando que eu tinha acesso e permissão total ao servidor (tirei essa conclusão pois consigo acessar o servidor normalmente do me notebook, eu não tenho acesso a nenhuma pasta do servidor pois achei que não seria necessário então não solicitei para o responsável do servidor, mas consigo entrar no servidor normalmente) deduzi que o problema estava na string de conexão e então criei o tópico na área de c# e depois de muito discussão e testes me recomendaram criar um tópico aqui pois provavelmente o problema está segurança/permissão.

    Então gostaria de saber a opinião de vocês que tem mais experiencia com banco da dados e  se vocês tem alguma solução para isso.

    algumas informações que talvez vocês vão me perguntam futuramente.

    Nome do servidor é : SERVIDOR2.

    ID  da instacia: ABESSERVIDOR

    Instancia: SOFTWAREBANCO


    apesar de ter optado por botar um id/instancia/senha quando estava instalando o sql, eu criei a banco de dados no modo windows authentication, então creio que o id/senha do sql seja irrelevante.

    uma foto do SSMS :

    e creio que a conexão remota já esta ativada, já fiz diversos procedimentos pra ativar. um deles foi o da foto abaixo

    Desculpa pelo texto gigante, é que to a 3 dias tentando resolver esse problema e o prazo pra eu entregar o projeto já passou então criei o tópico já com bastante informação para facilitar a ajuda de vocês.

    Agradecido desde já.

    quinta-feira, 19 de novembro de 2015 17:43

Respostas

  • Verifica nas configurações do SQL SERVER se está habilitado para receber conexões remotas.

    https://sqlfromhell.wordpress.com/2010/04/18/habilitando-o-acesso-remoto-no-sql-server-2008/

    dá uma olhada no post acima. 

    • Marcado como Resposta Rodrigo Leal quinta-feira, 19 de novembro de 2015 20:44
    quinta-feira, 19 de novembro de 2015 20:26

Todas as Respostas

  • Olá,

    Voce poderia postar um screenshot da configuraçao de segurança... creio que vai ajudar.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 19 de novembro de 2015 18:42
  • Olá,

    Voce poderia postar um screenshot da configuraçao de segurança... creio que vai ajudar.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    configuração de segurança você diz tipo o firewall no servidor?
    quinta-feira, 19 de novembro de 2015 19:28
  • nao... realmente a segurança do sql server. veja a seta vermenha na imagem abaixo:


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 19 de novembro de 2015 19:33
  • nao... realmente a segurança do sql server. veja a seta vermenha na imagem abaixo:


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    isso aqui?

    quinta-feira, 19 de novembro de 2015 19:52
  • Testa trocar o nome do servidor pelo IP e colocar o Password na sua string de conexão, segue abaixo dois exemplos:

    //Com instância
    Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;

    //Sem instância
    Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;


    • Editado Poliana Dias quinta-feira, 19 de novembro de 2015 19:54
    quinta-feira, 19 de novembro de 2015 19:54
  • O problema esta ai... voce nao configurou a segurança... o unico usuario que tem permissao de acessar o banco é Servidor2\Usuario... quando voce esta logado na sua estaçao o usuario é ABES-PC16\Usuario (correto?)

    PAra que a autenticaçao windows funcione, cada usuario (ou grupos) deve ser adicionado na segurança do SQL Server, mas isso só funciona bem se voce tem um servidor Activedirectory (domain controler).. Só agora que eu vi que seu servidor é uma estaçao Windows 10.

    Sugiro voce nao usar autenticaçao windows neste caso. Use a autenticaçao sql server no inicio 

    http://www.tiespecialistas.com.br/2014/10/entendendo-autenticacao-e-o-acesso-sql-server/

    Eu sugiro usar a autenticaçao por aplicaçao (application roles) que vai permitir que somente sua aplicaçao use o banco:

    https://www.bfbiz.com.br/artigo_details.aspx?ID=129

    Mas ela é um pouco complexa de entender e de implementar.

    Comece pelo mais simples.. crie um login d ede direitos de leitura e escrita no seu banco (evite usar a conta SA)

    na connection string use assim:

    string connstr="Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
    Password=myPassword;"

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quinta-feira, 19 de novembro de 2015 20:07
  • Testa trocar o nome do servidor pelo IP e colocar o Password na sua string de conexão, segue abaixo dois exemplos:

    //Com instância
    Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;

    //Sem instância
    Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;


    Então me falaram que por ta usando windows authentication não precisaria usar o username/password.

    mas testei das duas formas.

    usando o ip da o mesmo erro que citei no meu primeiro post.

    usando servidor/instancia deu um erro diferente, da uma olhada:

    só tirando uma dúvida, o username/password é o da instancia e senha que eu escolhi durante o processo de instalação do sql correto?

    quinta-feira, 19 de novembro de 2015 20:14
  • Sim, com autenticaçao windows voce nao precisa entrar usuario e senha, mas isso só funciona se voce tem uma rede com um domain controler (funciona loca, mas nao remoto). O usuario que voce se conecta na sua maquina nao é o mesmo que se conecta no servidor2. 

    O que voce escolhe no inicio é a senha do login SA. Tem certeza que voce colocou a senha certa?

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quinta-feira, 19 de novembro de 2015 20:20
  • Verifica nas configurações do SQL SERVER se está habilitado para receber conexões remotas.

    https://sqlfromhell.wordpress.com/2010/04/18/habilitando-o-acesso-remoto-no-sql-server-2008/

    dá uma olhada no post acima. 

    • Marcado como Resposta Rodrigo Leal quinta-feira, 19 de novembro de 2015 20:44
    quinta-feira, 19 de novembro de 2015 20:26
  • Sim, com autenticaçao windows voce nao precisa entrar usuario e senha, mas isso só funciona se voce tem uma rede com um domain controler (funciona loca, mas nao remoto). O usuario que voce se conecta na sua maquina nao é o mesmo que se conecta no servidor2. 

    O que voce escolhe no inicio é a senha do login SA. Tem certeza que voce colocou a senha certa?

    Att



    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    a entendi, vou ser sincero com você eu não estava conseguindo usar sql authentication(por isso criei o banco com windows authentication) porque estava botando um username/senha que tinha escolhido no processo de instalação do sqlserver que no caso era ABESSERVIDOR que tava denominado como id da instancia, agora tentei entrar usando sa/senha que escolhi e consegui entrar pelo sql authentication.

    alterei la na string de conexão o username pra sa e botei a senha que escolhi e deu o mesmo erro da print a cima.

    mas você falou sobre local e lembrei que a uns dias atrás quando tava tentando importar um excel no banco e eu mudei alguma coisa pra local, não pode ser isso?

    se sim, aonde confiro e reconfiguro isso?


    • Editado Rodrigo Leal quinta-feira, 19 de novembro de 2015 20:31
    quinta-feira, 19 de novembro de 2015 20:30
  • Verifica nas configurações do SQL SERVER se está habilitado para receber conexões remotas.

    https://sqlfromhell.wordpress.com/2010/04/18/habilitando-o-acesso-remoto-no-sql-server-2008/

    dá uma olhada no post acima. 

    Vou fazer todos esse procedimentos novamente e testar e já atualizo
    quinta-feira, 19 de novembro de 2015 20:35
  • fiz os procedimentos do link que a poliana passou e consegui.

    só ativei a porta 1433 e tentei fazer uma conexão da minha maquina pelo SSMS usando sql authentication e consegui.

    ai arrumei a string com as instancias que informei que usei no SSMS e deu certo!

    Muito obrigado a todos pela ajuda e paciência.

    quinta-feira, 19 de novembro de 2015 20:46
  • Não esquece de marcar como resposta! ;) 
    quinta-feira, 19 de novembro de 2015 20:53