[firebase-br] Conexão e Concorrência
Eduardo
ev.leite em uol.com.br
Seg Abr 11 04:54:11 -03 2005
Olá Pessoal, como podem ver pelo horário já estou maluco, mas vamos lá.
Bom, estou com um pequeno problema que é o seguinte:
Tenho um componente que chama a base para efetuar uma consulta simples,
validação de usuário.
Este componente é feito em vb6 e está no COM+ "2003 server", sem
transação.
Se eu efetuar a chamada de duas maquinas diferentes ao mesmo tempo, o
objeto no com+ fica travado e acompanhando por log, vejo que abriu apenas
uma conexão no banco.
Efetuei diversos testes com vbs, com o isql e diversas chamdas externas
e funcionaram, porém faço a mesma coisa com o sql server e o problema não se
repete.
Pergunta existe alguma configuração de provider ou banco que possa estar me
barrando ?
Estou usando o Firebird 1.5 e Firebird ODBC driver v1.2 para a conexão.
Segue o código para que você possam analisar, Obrigado Eduardo Venâncio.
Public Function ObterNmFuncionarioLogin(ByRef msgErro As Variant, _
ByVal nm_login As Variant, _
ByVal nm_arquivo As String) As
Recordset
On Error GoTo ProcessaErr
NomeMetodo = "ObterNmFuncionarioLogin"
'envia a string de conexao para a class que trata a mesma
Dim objCnn As Object
Dim strSQL As String
Set objCnn = CreateObject("DataService.clsConnection")
strSQL = "SELECT tbf.cd_funcionario, tbf.nm_funcionario FROM
tbFuncionario tbf" & Chr(13)
strSQL = strSQL & "JOIN tbUsuarios tbu" & Chr(13)
strSQL = strSQL & "ON tbf.cd_funcionario = tbu.cd_funcionario" &
Chr(13)
strSQL = strSQL & "WHERE tbu.nm_login = '" & LCase(nm_login) & "'"
Set ObterNmFuncionarioLogin = objCnn.ExecutaQueryRs(msgErro, strSQL,
True, nm_arquivo)
If msgErro <> "" Then
GoTo ProcessaErr
End If
msgErro = ""
'destruindo o objeto
Set objCnn = Nothing
Exit Function
ProcessaErr:
Set Erro = CreateObject("Erro.clsErro")
If msgErro = "" Then
msgErro = Err.Number & " - " & Err.Description & " - " & NomeMetodo
End If
Call Erro.GeraLogErro("CallCenter", 1000, msgErro, NomeServico,
NomeMetodo)
Set Erro = Nothing
End Function
Public Function ExecutaQueryRs(ByRef msgErro As Variant, _
ByVal Query As String, _
ByVal FechaBanco As Boolean, _
Optional ByVal nm_arquivo As String) As Recordset
On Error GoTo ProcessaErr
Const NomeMetodo As String = "ExecutaQueryRs"
Dim rs As Object
Dim cn As Object
Set cn = CreateObject("adodb.connection")
cn.Open "DSN=teste"
Open App.Path & "\log.txt" For Append As #1
Print #1, "Abriu conexao = " & App.ThreadID
Close #1
Set rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = cn
rs.CursorLocation = 3 ' adUseClient
rs.CursorType = 0 ' adOpenForwardOnly
rs.LockType = 1 ' adLockReadOnly
rs.Open Query
Open App.Path & "\log.txt" For Append As #1
Print #1, "Depois do rs.Open = " & App.ThreadID
Close #1
Set ExecutaQueryRs = rs
Set cn = Nothing
Open App.Path & "\log.txt" For Append As #1
Print #1, "Fechou DB = " & App.ThreadID
Close #1
Exit Function
ProcessaErr:
msgErro = Err.Number & " - " & Err.Description & " - " & msgErro
End Function
Mais detalhes sobre a lista de discussão lista