J'ai écrit une petite application, qui peut restaurer une base de données (C# et SQL2005), mais après avoir accédé à la base de données, je ne peux pas la laisser tomber - elle dit qu'elle est en usage .. faire avec le SQLconnection-pooling, mais puis-je le forcer à relaser la base de données ??Comment forcer SQLconnection à libérer une base de données?
0
A
Répondre
1
Spécifiez 'Pooling = False' dans la chaîne de connexion.
0
Si vous utlise
Using SQLConnection
'' do your stuff here
End Using
Je pense que cela oblige alors la libération des ressources après sa sortie pour fermer votre connexion
0
Appel « UTILISATION SomeOtherDB » (par exemple Master), ou l'un des
ALTER DATABASE SET SINGLE_USER
ou
ALTER DATABASE SET SINGLE_USER WITH ROLLBACK_IMMEDIATE
pour fermer d'autres connexions. Le premier attend que les connexions se terminent, le second est immédiat.
1
Éliminez votre objet SqlConnection.
0
"Appel "USE SomeOtherDB"(maître par exemple) pour fermer votre connexion, ou l'un des"
//on master ... CREATE
using (var cnn = new SqlConnection(MASTER))
{
cnn.Open();
var createDbCmd = new SqlCommand(string.Format("create database [{0}]", db), cnn).ExecuteNonQuery();
cnn.Close();
}
using (var cnn = new SqlConnection(tempDB))
{
cnn.Open();
var createTbl = new SqlCommand(string.Format("create table t (t int)"), cnn).ExecuteNonQuery();
var dropTbl = new SqlCommand(string.Format("drop table t"), cnn).ExecuteNonQuery();
//Do additional stuf
var userMaster = new SqlCommand(string.Format("use master"), cnn).ExecuteNonQuery();
cnn.Close();
}
//on master ... CREATE
using (var cnn = new SqlConnection(MASTER))
{
cnn.Open();
var dropDbCmd = new SqlCommand(string.Format("drop database [{0}]", db), cnn).ExecuteNonQuery();
cnn.Close();
}