rsegovia 0 Denunciar post Postado Dezembro 29, 2008 Estou com um probleminha para fexar a conexão com o sql server, utilizo c# e tenho uma função +/- assim public DataSet PopulaGridStatus(string ind_categoria, out Int32 totalRecords, string tipoSp) { clsBanco db = new clsBanco(); string strSql; DataSet ds; if (ind_categoria == null) { ind_categoria = ""; } strSql = "exec db_tabela..sp_status_acionamento '" + tipoSp + "','" + ind_categoria + "'"; ds = db.ExecuteQueryPadding(strSql); totalRecords = ds.Tables[0].Rows.Count; db.Desconecta(); return ds; } e a minha classe que desconecta public void Desconecta() { try { if (sConn.State != 0) { sConn.Close(); sConn.Dispose(); } } catch (Exception e) { sConn.Close(); sendMail mail = new sendMail(); mail.SendMailError("Desconecta", e.Message); } } Meu problema é o seguinte, mesmo executando o Close() e o Dispose(), eu continuo com a sessão ativa no sql server, eu verifico a sessão usando a sp sp_who em Master. Alguem sabe como resolver isso ? Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 29, 2008 Já debugou seu código para ver se o State é diferente de 0 e se por acaso não esta entrando catch? Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
rsegovia 0 Denunciar post Postado Dezembro 30, 2008 Já cara, nao adianta, a cnx continua no sql server, como inativa, mas continua fiz uma função no sql q limpa isso, mas nao queria que fosse feito dessa forma. use master /*select * from sysprocesses where upper(cmd) = 'AWAITING COMMAND' sp_who active */ declare @vcdbname varchar(50) set nocount on declare Users cursor for select spid from master..sysprocesses where upper(cmd) = 'AWAITING COMMAND' declare @spid int, @str varchar(255) open users fetch next from users into @spid while @@fetch_status <> -1 begin if @@fetch_status = 0 begin set @str = 'kill ' + convert(varchar, @spid) exec (@str) end fetch next from users into @spid end deallocate users Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Janeiro 5, 2009 É perfeitamente normal que a conexão continue aparecendo no SQL Server, isso se chama pool. A próxima vez que você abrir uma conexão ele vai procurar alguma inativa e utilizar ao invés de criar uma nova. Agora, se estiver aparecendo várias conexões ai sim é um problema, enquanto tiver 1 ou 2 está tudo ok. Att, Guilherme Oenning. Compartilhar este post Link para o post Compartilhar em outros sites