NÃO CONSIGO FAZER C# CONECTAR COM SQL-SERVER
Estou com o seguinte problema, o código abaixo quando executado na minha maquina em ambiente IIS, funciona perfeito, consigo extrair os dados Banco SQL. Mas quando publico no UOL já não consigo conectar com o SQL. Será que no UOL ou meu código que eta errado mesmo?
[txt-color=#0000f0]using System;
using System.Data;
using System.Data.OleDb;
namespace VTSBoleto
{
public partial class Boletos : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.txtCnpjCpf.Text = [Ô][Ô];
this.txtCliente.Text = [Ô][Ô];
this.lblMsg.Text = [Ô][Ô];
}
}
protected void BtnBoletosAbertos_Click(object sender, EventArgs e)
{
DadosCliente(this.txtCnpjCpf.Text);
}
protected void grdListaBoletos_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void txtCnpjCpf_TextChanged(object sender, EventArgs e)
{
}
protected void txtCliente_TextChanged(object sender, EventArgs e)
{
}
//......Busca dados do cliente e mostra se localizar
protected void DadosCliente(string Campo)
{
OleDbConnection oledbCnn;
OleDbCommand oledbCmd;
OleDbDataReader oledbReader;
string connStr = null;
string MsgSQL = null;
MsgSQL = [Ô]Select Cliente, Nome FROM VW_Clientes WHERE CPF =[ô]538.578.106-10[ô][Ô];
connStr = [Ô]Provider=SQLOLEDB.1;Password=SENHA;Persist Security Info=True;User ID=USER;Initial Catalog=Teste;Data Source=sistemapc.xxx.xxx.br,3040;[Ô];
oledbCnn = new OleDbConnection(connStr);
try
{
oledbCnn.Open();
oledbCmd = new OleDbCommand(MsgSQL, oledbCnn);
oledbReader = oledbCmd.ExecuteReader();
DataTable schemaTable = oledbReader.GetSchemaTable();
if (oledbReader.HasRows)
{
while (oledbReader.Read())
{
this.txtCliente.Text = oledbReader.GetDecimal(0) + [Ô] - [Ô] + oledbReader.GetString(1);
}
}
else
{
this.lblMsg.Text = [Ô]Cliente não localizado, verifique o dados informado![Ô];
}
oledbReader.Close();
oledbCmd.Dispose();
oledbCnn.Close();
}
catch
{
this.lblMsg.Text = [Ô]Falha na conexão SQL-Server![Ô];
}
}
}
}[/txt-color]
[txt-color=#0000f0]using System;
using System.Data;
using System.Data.OleDb;
namespace VTSBoleto
{
public partial class Boletos : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.txtCnpjCpf.Text = [Ô][Ô];
this.txtCliente.Text = [Ô][Ô];
this.lblMsg.Text = [Ô][Ô];
}
}
protected void BtnBoletosAbertos_Click(object sender, EventArgs e)
{
DadosCliente(this.txtCnpjCpf.Text);
}
protected void grdListaBoletos_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void txtCnpjCpf_TextChanged(object sender, EventArgs e)
{
}
protected void txtCliente_TextChanged(object sender, EventArgs e)
{
}
//......Busca dados do cliente e mostra se localizar
protected void DadosCliente(string Campo)
{
OleDbConnection oledbCnn;
OleDbCommand oledbCmd;
OleDbDataReader oledbReader;
string connStr = null;
string MsgSQL = null;
MsgSQL = [Ô]Select Cliente, Nome FROM VW_Clientes WHERE CPF =[ô]538.578.106-10[ô][Ô];
connStr = [Ô]Provider=SQLOLEDB.1;Password=SENHA;Persist Security Info=True;User ID=USER;Initial Catalog=Teste;Data Source=sistemapc.xxx.xxx.br,3040;[Ô];
oledbCnn = new OleDbConnection(connStr);
try
{
oledbCnn.Open();
oledbCmd = new OleDbCommand(MsgSQL, oledbCnn);
oledbReader = oledbCmd.ExecuteReader();
DataTable schemaTable = oledbReader.GetSchemaTable();
if (oledbReader.HasRows)
{
while (oledbReader.Read())
{
this.txtCliente.Text = oledbReader.GetDecimal(0) + [Ô] - [Ô] + oledbReader.GetString(1);
}
}
else
{
this.lblMsg.Text = [Ô]Cliente não localizado, verifique o dados informado![Ô];
}
oledbReader.Close();
oledbCmd.Dispose();
oledbCnn.Close();
}
catch
{
this.lblMsg.Text = [Ô]Falha na conexão SQL-Server![Ô];
}
}
}
}[/txt-color]
Onde está hospedado o SqlServer?
Servidor esta em um cliente, mas o server SQL esta com porta liberada para acesso remoto que é o Data Source.
E qual é a mensagem de erro?
Amigo, não tenho certeza exatamente do que você quer fazer, mas acho que você está pensando ao contrário de como deveria ser essa estrutura. Não é o servidor que acessa o cliente, mas sim o contrário.
Olá Kerplunk, obrigado pelo retorno.
Estou com seguinte cenário:
- Um servidor SQL Server 2014, configurado na empresa do cliente para aceitar acesso remoto, porta liberada.
Da nossa empresa usando SQL Server Management Studio 2012 consigo acesso ao servidor.
- Com o código [Ô]C#[Ô] que coloquei na primeira mensagem, sendo executado no IIS na minha maquina consigo acesso ao SQL Server 2014
- Quando publico esse código no [Ô]UOL[Ô], já não consigo acesso ao SQL Server 2014
Só retorna tempo excedido ou Servidor desconhecido
- Configuramos aqui na empresa uma maquina com SQL Server 2005, liberamos uma porta para acesso e acontece a mesma coisa.
Usando IIS conseguimos, quando publicamos no UOL não acessa mais.
Tentei usando [Ô]System.Data.SqlClient[Ô] e [Ô]System.Data.OleDb[Ô] pra ver se conseguia acesso ao banco de dado, mas o retorno é erro.
[ ][ô]s
Estou com seguinte cenário:
- Um servidor SQL Server 2014, configurado na empresa do cliente para aceitar acesso remoto, porta liberada.
Da nossa empresa usando SQL Server Management Studio 2012 consigo acesso ao servidor.
- Com o código [Ô]C#[Ô] que coloquei na primeira mensagem, sendo executado no IIS na minha maquina consigo acesso ao SQL Server 2014
- Quando publico esse código no [Ô]UOL[Ô], já não consigo acesso ao SQL Server 2014
Só retorna tempo excedido ou Servidor desconhecido
- Configuramos aqui na empresa uma maquina com SQL Server 2005, liberamos uma porta para acesso e acontece a mesma coisa.
Usando IIS conseguimos, quando publicamos no UOL não acessa mais.
Tentei usando [Ô]System.Data.SqlClient[Ô] e [Ô]System.Data.OleDb[Ô] pra ver se conseguia acesso ao banco de dado, mas o retorno é erro.
[ ][ô]s
Se está usando SQL Server deveria usar o System.Data.SqlClient, mas ainda é estranho um sistema hospedado na internet acessar um banco de dados que está na empresa.
Mas de qualquer forma o problema provavelmente é com o UOL, se está dando erros de timeout ou de servidor desconhecido é bem provável que eles estejam bloqueando conexões de saÃda, ou que não estejam conseguindo resolver o endereço do servidor que você passou.
As únicas coisas que consigo pensar em testar ai é trocar o endereço do servidor na sua string de conexão pelo IP do seu cliente, para descobrir se não pode ser apenas do servidor da UOL não estar conseguindo resolver o DNS, e a outra seria testar ver se usando a porta padrão não funciona, e para isso seria necessário alterar no seu cliente a porta que está aceitando as conexões do SQL Server.
De resto acho que só falando com a UOL mesmo para saber se bloqueiam ou não esse tipo de conexão e se tem alguma forma de liberar.
Mas de qualquer forma o problema provavelmente é com o UOL, se está dando erros de timeout ou de servidor desconhecido é bem provável que eles estejam bloqueando conexões de saÃda, ou que não estejam conseguindo resolver o endereço do servidor que você passou.
As únicas coisas que consigo pensar em testar ai é trocar o endereço do servidor na sua string de conexão pelo IP do seu cliente, para descobrir se não pode ser apenas do servidor da UOL não estar conseguindo resolver o DNS, e a outra seria testar ver se usando a porta padrão não funciona, e para isso seria necessário alterar no seu cliente a porta que está aceitando as conexões do SQL Server.
De resto acho que só falando com a UOL mesmo para saber se bloqueiam ou não esse tipo de conexão e se tem alguma forma de liberar.
Infelizmente o cliente não quer colocar os dados no SQL Server do UOL, então fomos obrigados a tentar forçar essa comunicação.
Vou alterar a string de conexão para o IP e depois alterar a porta para a padrão.
Se não der certo, ai é reunião pra expor o fato e convencer o cliente.
Vou alterar a string de conexão para o IP e depois alterar a porta para a padrão.
Se não der certo, ai é reunião pra expor o fato e convencer o cliente.
Ainda se for falar com o cliente sobre colocar no servidor remoto o banco de dados não se esqueça que no geral os provedor não permitem o uso de bancos de dados hospedados em servidores compartilhados diretamente por programas remotos, no geral está no contrato que só pode ser usado remotamente para o gerenciamento do mesmo, ou seja, para usar o Management Studio, para ter acesso remoto pelo seu programa só com a criação de um webservice por exemplo. Sei que existem provedores que limitam até o número de conexões remotas simultâneas.
Sem acesso mesmo. Vamos pra reunião.
Obrigado a todos.
Obrigado a todos.
Tópico encerrado , respostas não são mais permitidas