Jump to content

SQL Server 2012 Datenbank wiederherstellen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Beim SQL Server 2008 war es sehr einfach eine Datenbank wiederherzustellen, wenn der Sicherungssatz nicht denselben Datenbanknamen enthielt als die vorhandene Datenbank. Denn dieser Name wurde beim SQL Server 2008 dann ignoriert. Beim SQL Server 2012 ist das nicht mehr so einfach. Hier kommt es zu folgender Fehlermeldung, wenn man dieses versucht:

 

USE master;
GO

ALTER DATABASE Testdatenbank SET RECOVERY SIMPLE;
GO

RESTORE DATABASE Testdatenbank
FROM DISK = 'D:\Testdatenbank_Backup.bak'
GO

 

Meldung 3154, Ebene 16, Status 4, Zeile 2
Der Sicherungssatz enthält die Sicherung einer anderen Datenbank als der vorhandenen Testdatenbank-Datenbank.

Meldung 3013, Ebene 16, Status 1, Zeile 2
RESTORE DATABASE wird fehlerbedingt beendet.

 

Link zu diesem Kommentar

HI

Warum erstelltst du die Datenbank vorher?

 

Mach es so:

USE [Master]

go

RESTORE DATABASE [TestDB] FROM DISK = N'F:\MSSQL_Backup\AnotherDB\Abackup.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5

go

 

P.S

Ganz Wichtig nicht die "Replace" option vergessen. Sollte die Testdatenbank vorhanden oder auch nicht vorhanden sein.

 

Liebe Grüße

Alex

bearbeitet von LiveeviL-Odw
Link zu diesem Kommentar

Das hilft schon sehr weiter, aber wenn man z. B. eine Datei von einem anderen SQL Server verwendet, der einen anderen Speicherort hat und darüber hinaus noch der Name der Datenbank im Sicherungssatz anders lautet, dann kommt folgende Fehlermeldung:

 

 

 

Meldung 5133, Ebene 16, Status 1, Zeile 3
Fehler bei der Verzeichnissuche für die Datei 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MOND\MSSQL\DATA\Dummy.mdf'. Betriebssystemfehler 3(Das System kann den angegebenen Pfad nicht finden.).
Meldung 3156, Ebene 16, Status 3, Zeile 3
Die Datei 'Dummy' kann nicht in 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MOND\MSSQL\DATA\Dummy.mdf' wiederhergestellt werden. Verwenden Sie WITH MOVE, um einen gültigen Speicherort für die Datei zu identifizieren.
Meldung 5133, Ebene 16, Status 1, Zeile 3
Fehler bei der Verzeichnissuche für die Datei 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MOND\MSSQL\DATA\Dummy_log.ldf'. Betriebssystemfehler 3(Das System kann den angegebenen Pfad nicht finden.).
Meldung 3156, Ebene 16, Status 3, Zeile 3
Die Datei 'Dummy_log' kann nicht in 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MOND\MSSQL\DATA\Dummy_log.ldf' wiederhergestellt werden. Verwenden Sie WITH MOVE, um einen gültigen Speicherort für die Datei zu identifizieren.
Meldung 3119, Ebene 16, Status 1, Zeile 3
Beim Planen der RESTORE-Anweisung wurden Probleme gefunden. Vorausgehende Meldungen enthalten ausführliche Informationen.
Meldung 3013, Ebene 16, Status 1, Zeile 3
RESTORE DATABASE wird fehlerbedingt beendet.
Link zu diesem Kommentar

dann mach es doch auch ;-)

 

Use [master]

go

 
RESTORE DATABASE [TESTDB] FROM  DISK = N'C:\Datenbanken\Backup\Produktiv.bak' WITH  FILE = 1,  MOVE N'ProduktivDB' TO N'C:\Datenbanken\neuerfolder\neuerfilname.mdf',  MOVE N'ProduktivDB_log' TO N'C:\Datenbanken\neuer folder\neuerfilname_log.ldf',  NOUNLOAD, REPLACE,  STATS = 5
 
GO
 
 
bei N'C:\Datenbanken\neuerfolder' <---- Pfad frei wählbar       neuerfilname_log.ldf  neuerfilname.mdf  <---- Filename frei wählbar
 
bei fragen einfach melden!
 
Freud mich wenn ich helfen kann
mfg
Alex
bearbeitet von LiveeviL-Odw
Link zu diesem Kommentar

Das Problem hierbei ist noch "'ProduktivDB". Das scheint der Name der Datenbank im Sicherungssatz zu sein oder auch nicht.

 

 

 

Meldung 3234, Ebene 16, Status 2, Zeile 3
Die logische Datei 'Test_log' ist nicht Teil der Test-Datenbank. Verwenden Sie RESTORE FILELISTONLY zum Auflisten der logischen Dateinamen.
Meldung 3013, Ebene 16, Status 1, Zeile 3
RESTORE DATABASE wird fehlerbedingt beendet.

 

Wie beschrieben sind sowohl der Pfad als auch der Name der wiederherzustellenden Datenbank anders als in der Zieldatenbank

Link zu diesem Kommentar

Deswegen der Move befehl...... Das ist ein sogenander redirect befehl....

Was hast du den für einen Patch stand weil es funktioniert..... hab es jetzt ein paar mal getestet.

 

Hier noch mal mein Script wo ich aus einer ProduktivDB eine TestDB erstelle:

 

Use [Master]

GO

RESTORE DATABASE [TestDB] FILE = N'ProduktivDB' FROM DISK = N'F:\MSSQL_Backup\ProduktivDB\ProduktivDB_backup_2013_12_17.bak' WITH FILE = 1, MOVE N'ProduktivDB.mdb' TO N'E:\MSSQL_Data\TestDB.mdf', MOVE N'ProduktivDB_log' TO N'F:\MSSQL_Log\TestDB_Log.ldf', NOUNLOAD, REPLACE, STATS = 10

GO

 

 

Das Funktioniert das mach ich am Tag mehrfach.....

Ich kann mir nur vorstellen das du die Filenamen falsch angibst.

Oder das dir ein Patch oder Servicepack fehlt. 



P.S

Nach dem TO kannst du nen neuen Pfad und nen neuen Datenfilenamen angeben.... wie du es brauchst.

Link zu diesem Kommentar

Das Backup stammt vom SQL Server 2008 SP2



Das Problem ist der logische Dateiname im Steuerungssatz. Dieser ist nicht immer gleich. Deshalb wirft das Script beim SQL Server 2012 eine Fehlermeldung aus. 

 

Bei Deinem neune Beispiel habe ich gesehen, dass Du eine Access (*.mdb) Datei angegeben hast. Ist das so korrekt, das wäre ja eine Konvertierung.

Link zu diesem Kommentar

upps sorry in der hitze des gefechts vertippt soll natürlich ein *.mdf heissen.

Da waren die finger schneller als der Kopf.

 

Wenn das ein 2008 R2 file ist könnte ich mir vorstellen das es an der Berechtigung vom File an sich hängt das hatte ich auch schon.

Prüfe doch mal bitte die NTFS berechtigungen der File und schau mal ob es der gleiche User ist wo mit der SQL Server 2012 läuft. ansonsten bitte mal die berechtigungen setzen.

 

Normalerweiße ist es kein Problem eine kleinerer Version in eine Größere Version zu restoren, umgedreht geht nicht!

 

Wenn es das nicht ist würde ich mit Detach / Attach verfahren Arbeiten.

Das heisst du Kopierst die Datenbank auf dem MSSQL 2008R2 zb. Von ProduktivDB im gleichen Server als TestDB

Dann detachet du die auf dem MS2008R2 kopierst du die mdf und die Log File  zum MS2012 in das verzeichnis wo du die brauchst und attachet die.

 

Wenn du ein Script braucht melde dich einfach. Ich baue dir eins....

 

MFG

Alex

Link zu diesem Kommentar

Ich glaube das Grundübel ist immer noch nicht so ganz klar geworden, daher poste ich einmal drei Screenshots:

 

Wenn man die Datei, welche wiederhergestellt werden soll per Management Studio Express wiederherstellt, zeigt der folgende Screenshot, das der Name im Sicherungssatz nicht der ist, der erwartet wird. Ich möchte, dass die Datenbank nicht "TeleWorker_r840" sondern einfach nur "Dummy" heißen soll

 

sql01.png

 

Da diese von einem fremden SQL Server kommt stimmt der im Sicherungssatz enthaltene Pfad selbstverständlich auch nicht und muss geändert werden:

 

sql02.png

 

Darüber hinaus bietet das neue Management Studio eine für mich redundante Funktion, nämlich bei der Wiederherstellung die Datenbank in einen anderen Ordner zu verschieben:

 

sql03.png

 

Ich vermute daher, dass T-SQL nicht alle Möglichkeiten abdeckt, die man mit dem neuen Management Studio machen kann.

Link zu diesem Kommentar

oder 

 

USE [master]
RESTORE DATABASE [TestDB] FROM  DISK = N'D:\TestDB_Backup.bak' WITH  FILE = 1,  MOVE N'Dummy' TO N'D:\SQLDatenbank\TestDB.mdf',  MOVE N'Dummy_log' TO N'D:\SQLDatenbank\TestDB_Log.ldf',  NOUNLOAD,  REPLACE,  STATS = 5
GO

Das blöde ist, dass der Name "Dummy" unbekannt ist. Denn ich möchte aus Zeitgründen vermeiden, die Datenbank zu öffnen und reinzuschauen. 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...