Forums Neueste Beiträge
 

Verbindung zur DB trennen

03/07/2008 - 11:30 von andi rickenbach | Report spam
Hallo,

ich habe mit c# eine Applikation geschrieben welche eine Restore-Funktion
enthàlt. Das Restore funktioniert folgendermassen:
1. Temporàre DB erstellen
2. Restore auf Temporàre DB
3. Version aus einer Tabelle T_Version lesen
4. Version mit Applikation vergleichen ob Restore erlaubt
5. Temporàre DB löschen
6. Restore auf richtige DB

Ich habe nun das Problem das ich bei Punkt 5 die Temporàre DB nicht mehr
löschen kann, sobald ich mal eine Connection darauf hatte. Connection war
notwendig um aus T_Version zu lesen. sqlConn.Close() sowie sqlConn.Dispose()
wurde nach dem Zugriff ausgeführt aber ich kann die Temporàre DB trotzdem
nicht löschen.

Löschen versuche ich so:
Microsoft.SqlServer.Management.Smo.Server srv = new
Microsoft.SqlServer.Management.Smo.Server(new
Microsoft.SqlServer.Management.Common.ServerConnection(sqlRestoreConn));

//Drop temp database if exists
if (srv.Databases.Contains(strDBName) == true)
{
srv.Databases[strDBName].Drop();
}

Die Verbindung zuvor machte ich so:
string strConnectionTemp = String.Format(@"server={0};" +
@"password={1};database={2};" + @"User ID={3};Pooling=true;integrated
security=false;persist security info=False;Connect
Timeout={4}",strLocalMachine + "\\" + strServer, strPassword,
STR_TEMP_DATABASE_NAME, strUser, 30);

Kann mir da jemand helfen? Was muss ich tun damit wirklich diese Verbindung
wieder zerstört wird? Ich habe es mit SqlConnection.ClearAllPools();
versucht, das funktioniert, aber ich habe noch andere Verbindungen zu anderen
DB's offen, welche nicht zerstört werden dürfen. Ich muss also nur diese eine
DBConnection zur TemporàrenDB wieder zerstören um diese zu löschen.

Vielen Dank.
 

Lesen sie die antworten

#1 Uli Münch
06/07/2008 - 07:25 | Warnen spam
Hallo Andi,

wenn Du die Verbindung zu Deiner temporàren DB geschlossen hast und das
löschen schlàgt fehl? Dann würde ich vermuten der Server hat irgend einen
Prozess auf der temp.DB laufen, evtl auch "background" oder "sleeping".

Sieh Dir mal das Ergebnis von sp_who an.

Gruss Uli


"andi rickenbach" schrieb im
Newsbeitrag news:
Hallo,

ich habe mit c# eine Applikation geschrieben welche eine Restore-Funktion
enthàlt. Das Restore funktioniert folgendermassen:
1. Temporàre DB erstellen
2. Restore auf Temporàre DB
3. Version aus einer Tabelle T_Version lesen
4. Version mit Applikation vergleichen ob Restore erlaubt
5. Temporàre DB löschen
6. Restore auf richtige DB

Ich habe nun das Problem das ich bei Punkt 5 die Temporàre DB nicht mehr
löschen kann, sobald ich mal eine Connection darauf hatte. Connection war
notwendig um aus T_Version zu lesen. sqlConn.Close() sowie
sqlConn.Dispose()
wurde nach dem Zugriff ausgeführt aber ich kann die Temporàre DB trotzdem
nicht löschen.

Löschen versuche ich so:
Microsoft.SqlServer.Management.Smo.Server srv = new
Microsoft.SqlServer.Management.Smo.Server(new
Microsoft.SqlServer.Management.Common.ServerConnection(sqlRestoreConn));

//Drop temp database if exists
if (srv.Databases.Contains(strDBName) == true)
{
srv.Databases[strDBName].Drop();
}

Die Verbindung zuvor machte ich so:
string strConnectionTemp = String.Format(@"server={0};" +
@"password={1};database={2};" + @"User ID={3};Pooling=true;integrated
security=false;persist security info=False;Connect
Timeout={4}",strLocalMachine + "\\" + strServer, strPassword,
STR_TEMP_DATABASE_NAME, strUser, 30);

Kann mir da jemand helfen? Was muss ich tun damit wirklich diese
Verbindung
wieder zerstört wird? Ich habe es mit SqlConnection.ClearAllPools();
versucht, das funktioniert, aber ich habe noch andere Verbindungen zu
anderen
DB's offen, welche nicht zerstört werden dürfen. Ich muss also nur diese
eine
DBConnection zur TemporàrenDB wieder zerstören um diese zu löschen.

Vielen Dank.

Ähnliche fragen