Zum Inhalt wechseln


Foto

SQL Server 2012 Datenbank wiederherstellen

MS SQL

  • Bitte melde dich an um zu Antworten
23 Antworten in diesem Thema

#1 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 17. Dezember 2013 - 10:50

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.

 



#2 LiveeviL-Odw

LiveeviL-Odw

    Newbie

  • 23 Beiträge

 

Geschrieben 17. Dezember 2013 - 13:55

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, 17. Dezember 2013 - 13:58.

MS SQL-Server DBA

 


#3 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 17. Dezember 2013 - 17:46

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.


#4 LiveeviL-Odw

LiveeviL-Odw

    Newbie

  • 23 Beiträge

 

Geschrieben 17. Dezember 2013 - 18:02

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, 17. Dezember 2013 - 18:09.

MS SQL-Server DBA

 


#5 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 18. Dezember 2013 - 06:41

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



#6 LiveeviL-Odw

LiveeviL-Odw

    Newbie

  • 23 Beiträge

 

Geschrieben 18. Dezember 2013 - 06:56

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.


MS SQL-Server DBA

 


#7 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 18. Dezember 2013 - 08:44

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.



#8 LiveeviL-Odw

LiveeviL-Odw

    Newbie

  • 23 Beiträge

 

Geschrieben 18. Dezember 2013 - 09:07

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


MS SQL-Server DBA

 


#9 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 18. Dezember 2013 - 12:26

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.



#10 Dukel

Dukel

    Board Veteran

  • 9.259 Beiträge

 

Geschrieben 18. Dezember 2013 - 12:36

Was kommt heraus, wenn du im Management Studio alles so einstellst, das es klappt und dann auf den Script Button oben klickst?


Stop making stupid people famous.


#11 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 18. Dezember 2013 - 13:31

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


#12 Dukel

Dukel

    Board Veteran

  • 9.259 Beiträge

 

Geschrieben 18. Dezember 2013 - 13:35

Und damit geht dein restore jetzt?


Stop making stupid people famous.


#13 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 18. Dezember 2013 - 13:38

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. 



#14 Dukel

Dukel

    Board Veteran

  • 9.259 Beiträge

 

Geschrieben 18. Dezember 2013 - 13:44

Gibt es TestDB schon?


Stop making stupid people famous.


#15 McKloony

McKloony

    Newbie

  • 34 Beiträge

 

Geschrieben 18. Dezember 2013 - 13:52

Ja, diese muss ja schon existieren, sonst kann ich im Management Studio die Funktion Tasks \ Wiederherstellen \ Datenbank gar nicht aufgerufen werden.





Auch mit einem oder mehreren der folgenden Tags versehen: MS SQL