none
Conection timeout e timeout para execução de comandos RRS feed

  • Pergunta

  • Olá,

     

    Na string de conexão para acessar o BD,

     

    O parameter "conection timeout" vale apenas para delimitar um tempo para o objeto tentar conectar o banco de dados?

     

    E, no caso de eu necessitar colocar um tempo maior para EXECUÇÃO do comando ou consulta que for feito com o objeto sqlConnection que eu abrir com essa string?? Tem como??

     

    Obrigado

    quarta-feira, 15 de agosto de 2007 20:59

Respostas

  •  

    Cria o SQLCommand..

    seta o Timeout = 0, e o sqlconnection..

    e quando for passar os parametros para o SQLDataAdapter..vc passa o sqlcommand

    dim DA as SQLDataAdapter = new SQLDataAdapter(objSQLCommand)

     

    talvez resolva

    []s

    sexta-feira, 17 de agosto de 2007 18:03

Todas as Respostas

  •  

    Se eu entendi vc quer maior tempo para executar um comamdo.. se for isso vc pode utilizar o

    objSQLCommand.CommandTimeout = 0

    que ficara sem limite de tempo

     

    []s

     

    Ricardo Muniz

     

    quarta-feira, 15 de agosto de 2007 23:56
  •  

    Ola, Ricardo!!

    Obrigado pela atenção!!

     

    Pois é, de fato isso resolveria sim o meu problema.. no objeto que eu executo o comando tem essa possibilidade sim, e funciona.

     

    Porém, a minha questão era se tem um parametro na propria STRING DE CONEXÃO para definir um tempo maior para as consultas ou comandos?? Eu vi que tem esse "timeout", mas imagino eu que deve ser referente apenas ao tempo para estabelecer a CONEXÃO o banco, e não tem relação com as consultas que vão ser executadas por meio desta conexão.

     


    No exemplo a seguir, que tirei do site do Macoratti:

    Dim MySQL as string = "Select Codigo, Nome , Email from Clientes"
    Dim myConn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("conexaoSQL"))
    Dim Cmd as New SQLCommand(MySQL, MyConn)

    MyConn.Open()
    MyDataGrid.DataSource = Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection)
    MyDataGrid.DataBind()


    Eu já vi que o objeto SQLCommand tem uma propriedade para definir o tempo que o comando (ou consulta) sql pode levar para executar... isso é, um timeout.

    E eu preciso muito disso (uso muito), pois tenho consultas muito demoradas...
    Mas eu uso isso que falei, do timeout no CMD, e blz... Funciona.

     

    Porém, quando eu preciso gerar tabelas (DataTable) é muito mais facil e rapido eu usar o sqlDataAdapter.

    Minha função que gera a tabela:
            Dim c As New SqlConnection(StrSql) 'StrSql é uma variável global com toda minha string de conexão, cujas variáveis (banco, user, senha, etc) leio num arquivo de configuração.
     c.Open()
            Dim da1 As SqlDataAdapter
            Dim dt1 As New DataTable
            da1 = New SqlDataAdapter(sql, c)

            Try
                dt1.TableName = tabela
                da1.Fill(dt1)

            Catch ex As Exception
                Auditoria(sql, "Erro: Tentativa de montar um DataTable com a Função Gera Tabela do Modulo.", Err.Description, 6)
            c.Close()
            GeraTabela = dt1
            End Try


    E o problema é que esse tipo de objeto (DataAdapter) NÃO TEM  a propriedade de timeout, como o o SQLCommand tem Sad
    Então... por isso pensei em definir um tempo para execução na propria string de conexão... mas acho que não tem como né?

    sexta-feira, 17 de agosto de 2007 17:46
  •  

    Cria o SQLCommand..

    seta o Timeout = 0, e o sqlconnection..

    e quando for passar os parametros para o SQLDataAdapter..vc passa o sqlcommand

    dim DA as SQLDataAdapter = new SQLDataAdapter(objSQLCommand)

     

    talvez resolva

    []s

    sexta-feira, 17 de agosto de 2007 18:03
  •  

    Aham!!! funcionou!!

     

    ah, nem sabia que dava pra usar o SqlCommand como parametro para usar o sqlDataAdapter...

     

    Obrigado!

    quinta-feira, 23 de agosto de 2007 20:37