Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rsegovia

Fexar conexão

Recommended Posts

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

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

É 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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.