Usuário com melhor resposta
Como fazer para aplicação C# conecte de máquinas clientes à um banco de dados em um servidor?(URGENTE)

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 ConnectionStringPreciso muito da ajuda de vocês o quanto antes, é urgentíssimo!
Grato,Cleidson Bastos da França.
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:50
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:50
-
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 -
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:50
-
-
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:52
-
-
-
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:53
-
-
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:55
-
-
-
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...
tou usando a connection:
(@"Data Source=192.168.0.1\SQLExpress,1433;Initial Catalog=DataProtocolo;Integrated Security=SSPI;");
Grato. -
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- Editado C. Augusto Proiete [MVP]Moderator quinta-feira, 12 de abril de 2012 22:56
-