Problem beim Sichern/Rücksichern einer Datenbank

29/11/2008 - 15:39 von Carsten Ilwig | Report spam
Hallo Leute,

wenn ich eine Datenbank vom SQL-Server 2000 sichern bzw. rücksichern will
bekomme ich immere folgenden Fehler,
wenn ich das erstemal wieder auf die aktivierte DB zugreife:

"Fehler auf Übertragungsebene beim Senden der Anforderung an den Server.
(provider: Shared Memory-Provider, error: 1 - E/A-Fehler in
Lese-/Schreiboperation entdeckt)"

Folgenden Code verwende ich:

DB-Offline setzen:

SqlConnection mySQLConnection= new SqlConnection(myConnectionString);
SqlCommand sqlCommand = new SqlCommand("ALTER DATABASE myDB SET Offline
WITH ROLLBACK IMMEDIATE",mySQLConnection)
sqlCommand.ExecuteNonQuery()
mySQLConnection.Close()

DB-Online setzen:

SqlConnection mySQLConnection= new SqlConnection(myConnectionString);
SqlCommand sqlCommand = new SqlCommand("ALTER DATABASE myDB SET
Online",mySQLConnection)
sqlCommand.ExecuteNonQuery()
mySQLConnection.Close()

Wenn ich jetzt eine Selectabfrage auf eine Tabelle aus der gerade
aktivierten DB mache bekomme ich den o.g. Fehler.
Alle weiteren Zugriffe auf die DB funktionieren dann einwandfrei.

Vielen Dank für Eure Hilfe
Carsten
 

Lesen sie die antworten

#1 Elmar Boye
01/12/2008 - 10:21 | Warnen spam
Hallo Carsten,

Carsten Ilwig schrieb:
wenn ich eine Datenbank vom SQL-Server 2000 sichern bzw. rücksichern will
bekomme ich immere folgenden Fehler,
wenn ich das erstemal wieder auf die aktivierte DB zugreife:

"Fehler auf Übertragungsebene beim Senden der Anforderung an den Server.
(provider: Shared Memory-Provider, error: 1 - E/A-Fehler in
Lese-/Schreiboperation entdeckt)"



Der Fehler dürfte wohl daran liegen, dass Du die Datenbank Offline
stellst. Eine solche Datenbank steht nicht mehr zur Verfügung.
Verbindungen damit werden dann ebenfalls ungültig.

Für das Sichern einer Datenbank ist es nicht erforderlich und sinnvoll,
sie OFFLINE zu schalten. Der SQL Server beherrscht Online Sicherungen,
d. h. die Leute können weiter arbeiten.

Für das Wiederherstellen ist es sinnvoller den SINGLE_USER Modus
zu verwenden, um alle anderen Verbindungen zu trennen.
Dabei darf die Verbindung nicht auf die wiederherzustellende Datenbank
zeigen, sondern muß z. B. auf die "master" Datenbank gesetzt werden.

Nach dem Wiederherstellen sollte man den Verbindungspool für die Datenbank
löschen - siehe SqlConnection.ClearPool.

Gruß Elmar

Ähnliche fragen