Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
leo_bruno Profissional

Registrado: Sexta-Feira, 16 de Abril de 2010 Mensagens: 666
|
Enviada: Seg Jul 23, 2018 9:34 pm Assunto: Erro ao conectar com firedac em SQLServer 2008 (Internet) |
|
|
Olá pessoALL:
Estou precisando de uma maozinha.
Preciso temporariamente habilitar pra um cliente, o acesso direto através da internet a um banco de dados SQLServer2008.
Eu já configurei corretamente o Servidor e o NAT no modem.
Sei que está configurado corretamente, pq consigo estabelecer conexão remota usando telnet na porta 1433 e tb testei usando uma ferramenta de manutenção que usamos.
Tendo eliminado o modem do problema, quando eu tento conectar a aplicação, eu obtenho o erro:
"EMSSQLNativeException" Timeout Expired.
Abaixo vai a configuração da conexão:
Código: |
class function TClsBancoDados.ConectarMsSql(aFDConn: TFDConnection; aDadosCon: TCnxMsSQL): Boolean;
const
cIdMetodo = '"TClsBancoDados.ConectarMsSql" Responsável por conectar ao banco de dados Microsoft SQL Server' + sLineBreak;
var
_OsAutent: string;
begin
Result := False;
try
_OsAutent := 'Yes';
if aDadosCon.AuthType = taServidor then
_OsAutent := 'No';
aFDConn.Params.clear;
aFDConn.DriverName := 'MSSQL';
aFDConn.LoginPrompt := False;
aFDConn.Params.Add('Server=' + aDadosCon.ServerName);
aFDConn.Params.Add('Database=' + aDadosCon.DBName);
aFDConn.Params.Add('OSAuthent=' + _OsAutent);
aFDConn.Params.Add('Port=1433');
// aFDConn.Params.Add('LoginTimeout=10');
if aDadosCon.AuthType = taServidor then
begin
aFDConn.Params.Add('User_Name=' + aDadosCon.UserName);
aFDConn.Params.Add('Password=' + aDadosCon.UserPass);
end;
aFDConn.Params.add('ApplicationName=' + ExtractFileName(aDadosCon.ApplicName));
aFDConn.Connected := True;
Result := True;
except
on e:Exception do
raise Exception.Create(cIdMetodo + e.Message);
end;
end;
|
Alguem por aqui ja conseguiu estabelecer conexão pela internet com SQLServer2008 usando firedac?
Uso Delphi Tokyo 10.2.3
Obrigado |
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Jul 24, 2018 9:52 am Assunto: |
|
|
Bom dia,
Nunca testei, mas você tentou fazer um teste passando false para OSAuthent e preenchendo os parâmestros User_Name e Password?
Editado pela última vez por imex em Sáb Set 30, 2023 5:42 pm, num total de 1 vez |
|
Voltar ao Topo |
|
 |
leo_bruno Profissional

Registrado: Sexta-Feira, 16 de Abril de 2010 Mensagens: 666
|
Enviada: Ter Jul 24, 2018 10:12 am Assunto: |
|
|
Olá Imex.
Obrigado pela resposta.
Não está aparecendo ai no codigo, mas estou usando a autenticacao de servidor.
Então, em resposta a sua pergunta, Sim, estou passando usuario e senha e OS Autent = false.
Só funciona dessa maneira pra este caso, visto que o ambiente do cliente não tem servidor de dominio e a maquina que executa a aplicação está fora do ambiente de rede.
Eu já havia eliminado essa possibilidade, pq conforme mencionado, eu consigo conectar pelo gerenciador do banco EMS SQLServer Manager, mas somente usando autenticação do servidor.
Quando tento usando autenticacao do windows, retorna erro que o usuario pertence a um dominio desconhecido.
imex escreveu: | Bom dia,
Nunca testei, mas você tentou fazer um teste passando false para OSAuthent e preenchendo os parâmestros User_Name e Password?
|
|
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Jul 24, 2018 10:46 am Assunto: |
|
|
Não tenho como testar mas me parece que existe um parâmetro chamado DriverID no Firedac:
Código: | aFDConn.Params.Add('DriverID=MSSQL'); |
Confirme também se os parâmetros não estão ficando duplicados; não sei se o preenchimento do DriverName não adiciona alguns parâmetros.
Espero que ajude |
|
Voltar ao Topo |
|
 |
leo_bruno Profissional

Registrado: Sexta-Feira, 16 de Abril de 2010 Mensagens: 666
|
Enviada: Ter Jul 24, 2018 10:49 am Assunto: |
|
|
Obrigado novamente IMEX:
Tem mesmo, mas estou populando a property, veja:
Código: |
aFDConn.DriverName := 'MSSQL';
aFDConn.LoginPrompt := False;
|
Além disso, eu não mencionei, mas a aplicação conecta normalmente quando na rede local.
imex escreveu: | Não tenho como testar mas me parece que existe um parâmetro chamado DriverID no Firedac:
Código: | aFDConn.Params.Add('DriverID=MSSQL'); |
Confirme também se os parâmetros não estão ficando duplicados; não sei se o preenchimento do DriverName não adiciona alguns parâmetros.
Espero que ajude |
|
|
Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
|
Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Ter Jul 24, 2018 11:26 am Assunto: |
|
|
Sobre o parâmetro, postei porque em "Connection Definition Parameters" na página abaixo consta que o DriverID é um dos parâmetros requeridos na maioria das aplicações:
Citação: | http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Connect_to_Microsoft_SQL_Server_(FireDAC) |
Espero que alguém mais possa ajudar |
|
Voltar ao Topo |
|
 |
leo_bruno Profissional

Registrado: Sexta-Feira, 16 de Abril de 2010 Mensagens: 666
|
Enviada: Ter Jul 24, 2018 11:30 am Assunto: |
|
|
Olá amigo:
Obrigado.
Esta aplicação está sendo migrada para 3 camadas com Restful com DataSnap.
Esta solução é apenas temporária e o mais crítico aqui é o tempo.
Como eu consigo estabelecer comunicação com telnet e com o gerenciador do banco, o problema está na conexão da aplicação.
|
|
Voltar ao Topo |
|
 |
leo_bruno Profissional

Registrado: Sexta-Feira, 16 de Abril de 2010 Mensagens: 666
|
Enviada: Ter Jul 24, 2018 11:31 am Assunto: |
|
|
Você tem razão, vale a pena testar.
Farei o teste e respondo aqui com o resultado mais tarde.
Obrigado mais uma vez.
imex escreveu: | Sobre o parâmetro, postei porque em "Connection Definition Parameters" na página abaixo consta que o DriverID é um dos parâmetros requeridos na maioria das aplicações:
Citação: | http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Connect_to_Microsoft_SQL_Server_(FireDAC) |
Espero que alguém mais possa ajudar |
|
|
Voltar ao Topo |
|
 |
anderbelluno Colaborador


Registrado: Quarta-Feira, 23 de Novembro de 2011 Mensagens: 1030 Localização: Cianorte-PR
|
Enviada: Ter Jul 24, 2018 11:36 am Assunto: |
|
|
leo_bruno escreveu: | Olá amigo:
Obrigado.
Esta aplicação está sendo migrada para 3 camadas com Restful com DataSnap.
Esta solução é apenas temporária e o mais crítico aqui é o tempo.
Como eu consigo estabelecer comunicação com telnet e com o gerenciador do banco, o problema está na conexão da aplicação.
|
Cara, 3 minutos vc transforma sua aplicação em 3 camadas com o REST Dataware.
Te garanto, vale a pena gastar 5 minutinhos e olhar alguns vídeos.
Se seu problema é tempo, então essa seria a melhor solução, vc praticamente trabalha como se estivesse em 2 camadas ainda.
E além do mais, o componente é FREE.
Testa ai, assiste alguns vídeos e vai ver sobre o que estou falando.
Vlw. |
|
Voltar ao Topo |
|
 |
|