CommandTimeout=5 para configurar el tiempo de espera, pero no está bien.
Este es mi código:
Dim con As New NpgsqlConnection Dim cmd As New NpgsqlCommand Dim conStr As String Try Dim sql = "Select * from dat_extract_text a join dat_replace_text b on a.tm_id=b.tm_id join dat_base_text_dt c on c.tm_id=a.tm_id join dat_base_text_dt_font d on d.tm_id=c.tm_id limit 250000" conStr = "Server=192.168.1.10;Port=5434;UserId=testuser;Password=1234;Database=testdb;CommandTimeout=5;" con.ConnectionString = conStr con.Open() cmd.Connection = con cmd.CommandText = sql Dim st = DateTime.Now Dim rs = cmd.ExecuteNonQuery Dim et = DateTime.Now Dim t = (et - st).TotalSeconds Catch ex As Exception End TryEl tiempo de mi consulta es de aproximadamente 40 segundos, pero no se agota el tiempo de espera.
¿Cómo se puede establecer el valor de tiempo de espera de Npgsql?
Permítanos aclarar un poco su código.
Las conexiones y los comandos deben cerrarse y eliminarse. Usando... Terminar Usando bloques se encargan de esto por ti.
Puede pasar la cadena de conexión directamente al constructor. Asimismo, el texto del comando y la conexión se pueden pasar al constructor del comando.
Si desea cronometrar algo, use la clase Stopwatch disponible en .net.
Una instrucción Select no es una NonQuery. Devolverá un conjunto de resultados. Usar un DataTable le permitirá usar los datos.
Un Catch vacío no es de ayuda porque simplemente se traga los errores y no sabes qué salió mal.
Private Sub OPCode() Dim sql = "Select * from dat_extract_text a join dat_replace_text b on a.tm_id=b.tm_id join dat_base_text_dt c on c.tm_id=a.tm_id join dat_base_text_dt_font d on d.tm_id=c.tm_id limit 250000" Dim dt As New DataTable Using con As New NpgsqlConnection("Server=192.168.1.10;Port=5434;UserId=testuser;Password=1234;Database=testdb;"), cmd As New NpgsqlCommand(sql, con) 'cmd.CommandTimeout = 5 con.Open() dt.Load(cmd.ExecuteReader) End Using End SubPruebe el código de esta manera, sin el tiempo de espera y sin Try... Catch para ver en qué línea se produce el error y cuál es el error.
Use Timeout en lugar de CommandTimeout. Consulte esto: https://www.npgsql.org/doc/connection-string-parameters.html
conStr = "Server=192.168.1.10;Port=5434;UserId=testuser;Password=1234;Database=testdb;Timeout=5;"Nunca he usado ese proveedor en particular pero, al igual que otros proveedores de ADO.NET, el objeto de comando, es decir, la instancia de NpgsqlCommand , tiene una propiedad CommandTimeout . Presumiblemente deberías estar configurando eso.