SQLServer не закрывает соединение при Cn.Close

DNV
Дата: 13.01.2005 11:18:39
делаю такой текст
Dim Cn As New SqlClient.SqlConnection(sCn)
Cn.Open()
Cn.Close()
Cn.Dispose()
после этого смотрю, в SQL Server
Connections using this database: 1

И только когда закрываю свою прогу, соединение закрывается.
Догадываюсь, что это пул соединений, держит соединение у себя открытым.

А как сделать, чтобы при Cn.Close оно рвалось?
Alex Antonoff
Дата: 13.01.2005 11:23:15
Откажитесь от пула коннектов ;)
Sa
Дата: 13.01.2005 11:45:27
Добавь в строке подключения SqlConnection
Pooling=False;
Только точно это надо? Зачем растрачивать преимущество Pooling?

uid = Sa
DNV
Дата: 13.01.2005 12:23:38
Спасибо. в данном случае нужно.

нужно сохранить содержимое таблицы,
отключить базу, заменить ее
а потом восстановить таблицу в новую базу

поэтому желательно очистить пул.

А как кстати програмно очистить все пулы?
Sa
Дата: 13.01.2005 13:05:29
DNV

А как кстати програмно очистить все пулы?


Думаю из названия процедур понятно их предназначение.
using System.Reflection;

public static object GetConnectionPool(SqlConnection connection)
{
	FieldInfo internalConnectionFieldInfo =
		typeof(SqlConnection).GetField("_internalConnection", BindingFlags.NonPublic | BindingFlags.Instance);
	if (internalConnectionFieldInfo != null)
	{
		object sqlInternalConnection = internalConnectionFieldInfo.GetValue(connection);
		if (sqlInternalConnection != null)
		{
			PropertyInfo poolPropertyInfo = sqlInternalConnection.GetType().GetProperty("Pool");
			return
				poolPropertyInfo.GetValue(sqlInternalConnection, new object[] {});
		}
	}
	return null;
}

public static void ReleaseObjectPool(object pool)
{
	if (pool != null)
	{
		MethodInfo cleanupCallbackMethodInfo = pool.GetType().GetMethod("CleanupCallback", BindingFlags.NonPublic |	BindingFlags.Instance);
		if (cleanupCallbackMethodInfo != null)
		{
			cleanupCallbackMethodInfo.Invoke(pool,
				new object[] {null});
			cleanupCallbackMethodInfo.Invoke(pool, 
				new object[] {null});
		}
	}
}


uid = Sa
DNV
Дата: 13.01.2005 20:01:36
спасибо :)