none
Como fazer para aplicação C# conecte de máquinas clientes à um banco de dados em um servidor?(URGENTE) RRS feed

  • Pergunta

  • Bom dia pessoal,
    Tenho uma aplicação C# e preciso coloca-la em 5 máquinas clientes de maneira q elas acessem o banco em uma máquina servidor.
    Já configurei o SQL Server Express 2005 para aceitar conexões remotas...
    minha dúvida é em relação a ConnectionString..

    o formato que, em pesquisas encontrei foi o seguinte:

    Code Snippet

    Data Source=IP_Servidor,Porta;Network Library=DBMSSOCN;Initial Catalog=mydatabase;User ID=user;Password=pass";



    Segue minhas dúvidas:
     1º Como preencher o campo "Initial Catalog = mydatabase"
     2º Como será indicado o caminho do arquivo .mdf na ConnectionString

    Preciso muito da ajuda de vocês o quanto antes, é urgentíssimo!

    Grato,
    Cleidson Bastos da França.
    quinta-feira, 4 de setembro de 2008 03:09

Respostas

  • Olá Cleidson,

    1-) O "Initial Catalog" corresponde ao nome do seu banco de dados. O mesmo nome que você informou quando o criou.

    2-) Você não precisa informar o mome do arquivo MDF na Connection String. Você precisa apenas informar o IP ou nome do servidor, e o nome da instância do SQL Server Express (que por padrão, chama-se "SQLExpress").

    No seu exemplo, ficaria algo como:

    Data Source="IP_Servidor\SQLExpress,Porta;Initial Catalog=NomeDoBancoDeDados;User ID=Usuario;Password=Senha;"
    

    Vale lembrar que (supondo que você não alterou as configurações do client) ao informar o número da porta, você automaticamente define que a conexão será feita via TCP/IP. Se não informar o número da porta, a conexão será feita via Named Pipes.

    Outros exemplos:

    // Conexão via TCP IP na porta padrão, sem segurança integrada
    Data Source="IP_Servidor\SQLExpress,1437;Initial Catalog=NomeDoBancoDeDados;User ID=Usuario;Password=Senha;"
    
    // Conexão via TCP IP na porta padrão, com segurança integrada
    Data Source="IP_Servidor\SQLExpress,1437;Initial Catalog=NomeDoBancoDeDados;Integrated Security=SSPI;"
    
    // Conexão via Named Pipes na porta padrão, sem segurança integrada
    Data Source="IP_Servidor\SQLExpress;Initial Catalog=NomeDoBancoDeDados;User ID=Usuario;Password=Senha;"
    
    // Conexão via Named Pipes na porta padrão, com segurança integrada
    Data Source="IP_Servidor\SQLExpress;Initial Catalog=NomeDoBancoDeDados;Integrated Security=SSPI;"
    


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quinta-feira, 4 de setembro de 2008 09:00
    Moderador

Todas as Respostas

  • Olá Cleidson,

    1-) O "Initial Catalog" corresponde ao nome do seu banco de dados. O mesmo nome que você informou quando o criou.

    2-) Você não precisa informar o mome do arquivo MDF na Connection String. Você precisa apenas informar o IP ou nome do servidor, e o nome da instância do SQL Server Express (que por padrão, chama-se "SQLExpress").

    No seu exemplo, ficaria algo como:

    Data Source="IP_Servidor\SQLExpress,Porta;Initial Catalog=NomeDoBancoDeDados;User ID=Usuario;Password=Senha;"
    

    Vale lembrar que (supondo que você não alterou as configurações do client) ao informar o número da porta, você automaticamente define que a conexão será feita via TCP/IP. Se não informar o número da porta, a conexão será feita via Named Pipes.

    Outros exemplos:

    // Conexão via TCP IP na porta padrão, sem segurança integrada
    Data Source="IP_Servidor\SQLExpress,1437;Initial Catalog=NomeDoBancoDeDados;User ID=Usuario;Password=Senha;"
    
    // Conexão via TCP IP na porta padrão, com segurança integrada
    Data Source="IP_Servidor\SQLExpress,1437;Initial Catalog=NomeDoBancoDeDados;Integrated Security=SSPI;"
    
    // Conexão via Named Pipes na porta padrão, sem segurança integrada
    Data Source="IP_Servidor\SQLExpress;Initial Catalog=NomeDoBancoDeDados;User ID=Usuario;Password=Senha;"
    
    // Conexão via Named Pipes na porta padrão, com segurança integrada
    Data Source="IP_Servidor\SQLExpress;Initial Catalog=NomeDoBancoDeDados;Integrated Security=SSPI;"
    


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quinta-feira, 4 de setembro de 2008 09:00
    Moderador
  • Bom dia galera...
    já tentei de tudo.. mas n contecta ao banco...

    connection q tou usando...

    Code Snippet

    "Data Source=192.168.0.1\SQLExpress,1253;Initial Catalog=DataProtocolo;User Id=Usuario;Password=senha;"



    Será q eh alguma configuração errada no server ? eu liberei as conexões remotas... habilitei o tcp/ip... importei o banco pelo sql server data management...

    estou mto precisado disso funcionando o mais rápido possível.

    grato,
    Cleidson França
    quinta-feira, 4 de setembro de 2008 14:01
  • Cleidson,

    Você consegue se conectar ao banco, a partir de outra máquina, via Management Studio?


    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quinta-feira, 4 de setembro de 2008 14:35
    Moderador
  • Caio...

    Não cheguei a testar...
    só amanhã, estou fora do local..

    caso consiga acha q seria oq ?
    caso não?!

    grato,
    quinta-feira, 4 de setembro de 2008 18:55
  • Olá Cleidson,

    O teste com o Management Studio é só para tirar uma conclusão:

    - Se consegue via Management Studio, então tem algo errado com a sua connection string.

    - Se não consegue, então terá que investigar melhor. Eu começaria por verificar se a porta 1253 está mesmo aberta e aceitando conexões de outras máquinas. Vá em outra máquina, e tente conectar na porta 1253 via telnet, só para ver se a conexão acontece...

    C:\>telnet 192.168.0.1 1253

    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quinta-feira, 4 de setembro de 2008 19:07
    Moderador
  • Caio, 
    vlw cara, vou testar amanhã e entro em contao
    abraço,
    quinta-feira, 4 de setembro de 2008 19:35
  •  

    Caio,

     

    A porta 1253 deu falha ao conectar via telnet..

    mas n seria a 1433 n ? é q estou usando... e essa conectou..

     

    sexta-feira, 5 de setembro de 2008 11:59
  • Olá Cleidson,

    A 1433 é a porta padrão, mas no seu exemplo (acima) você usou a porta 1253, então assumi que você tinha alterado. De qualquer forma, agora você já sabe que a porta 1433 está aceitando conexões de fora, o que é bom sinal. O próximo passo é tentar conectar através dessa porta.

     

    Eu tentaria:

    1-) Utilizando autenticação Windows (segurança integrada)

    "Data Source=192.168.0.1\SQLExpress,1433;Initial Catalog=DataProtocolo;Integrated Security=SSPI;"


    2-) Utilizando autenticação SQL Server

     "Data Source=192.168.0.1\SQLExpress,1433;Initial Catalog=DataProtocolo;User Id=NomeUsuario;Password=SenhaUsuario;"


    3-) Utilizando autenticação Windows (sem Initial Catalog) - Supondo que o problema é permissão ao banco

    "Data Source=192.168.0.1\SQLExpress,1433;Initial Catalog=DataProtocolo;Integrated Security=SSPI;"

    4-) Utilizando autenticação SQL Server (sem Initial Catalog) - Supondo que o problema é permissão ao banco

    "Data Source=192.168.0.1\SQLExpress,1433;User Id=NomeUsuario;Password=SenhaUsuario;"


    Coisas que você deveria verificar:

    1-) Nome da instância é mesmo "SQLExpress"?
    2-) Modo de autenticação configurado no SQL Server (Windows?, Mixed?)
    3-) Consegue conectar via Management Studio?
    4-) Usuário e Senha (do SQL) estão corretos?



    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    sexta-feira, 5 de setembro de 2008 14:00
    Moderador
  • Caio,

     

    No ManageMant so consigo conectar pela autenticação do windows... porem la no sql server configuration está como serviço de rede, coloco como serviço local ?

     

    o nome da instancia eh mesmo SQLExpress..

     

     

    Abraço,
    sexta-feira, 5 de setembro de 2008 14:09
  • Cleidson,

    Se consegue via Management Studio, já é ótimo. Provavelmente o SQL Server está configurado para aceitar apenas autenticação Windows.

    Faça o seguinte, no Management Studio, conecte-se ao servidor, clique com o botão direito na instância (no object explorer), e vá nas propriedades. No item "Security" veja se está habilitado  o SQL Server E Windows Authentication, como na figura abaixo:




    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    sexta-feira, 5 de setembro de 2008 14:53
    Moderador
  • Caio,

    Valeuu... Funcionou!!!  =D

    segunda-feira, 8 de setembro de 2008 13:21
  • Maravilha!


    Por favor, marque o tópico como respondido Wink

     

    Abraços,

    Caio Proiete

    segunda-feira, 8 de setembro de 2008 14:57
    Moderador
  • Caio,

    Seguinte, não sei pq mas está funcionando em uma máquina, mas tento instalar em outras e n se comunica com o banco...
    n entendi nd agora... Sad

    tou usando a connection:


    (@"Data Source=192.168.0.1\SQLExpress,1433;Initial Catalog=DataProtocolo;Integrated Security=SSPI;");

    Grato.
    quarta-feira, 10 de setembro de 2008 14:17
  • Olá Cleidson,

    Qual é a mensagem de erro / exception?

    Pela sua connection string, você está usando segurança integrada, o que significa que o usuário logado precisa ter permissão para chegar à base de dados. Você está logando com o mesmo usuário (do Windows) nessas máquinas?

    Abraços,
    Caio Proiete



    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://caioproiete.net
    quarta-feira, 10 de setembro de 2008 14:46
    Moderador
  • Caio,
    Valeu, já consegui resolver.. o problema era permissão ao banco..
    só tem permissão Administrador.

    valeu,
    Abraço
    quarta-feira, 10 de setembro de 2008 16:09