2013-08-19 6 views
33

Aus irgendeinem Grund habe ich zu SQL Server 2008 R2 deinstallieren, aber vor, dass ich kopiert zwei Dateien (.mdf und .ldf) meiner Datenbank vonvon MDF- und LDF-Dateien von SQL Server 2008

C Wiederherstellen Datenbank : \ Program Files (x86) \ Microsoft SQL Server \ MSSQL10_50.MSSQL2008 \ MSSQL \ DATA

Nun, die Frage ist, ist es mir möglich, die Datenbank aus diesen Dateien in meinem neuen installierten SQL Server 2008 wiederherstellen R2.

Wenn ja: wie kann ich das tun?

+0

Ja, Sie können [eine Datenbank anhängen] (http://technet.microsoft.com/en-us/library/ms190209.aspx), wenn Sie die zwei Dateien haben. –

+0

Ich habe versucht, dies zu tun, aber es gibt einen Fehler beim Anhängen der Datenbank. –

+0

Fehlermeldung, dass die physische Datei nicht geöffnet werden kann. Betriebssystemfehler 5 (Zugriff verweigert) MSSQL Server-Fehler 5120 –

Antwort

81

Ja, es ist möglich. Die Schritte sind:

  1. an erster Stelle die .mdf und .ldf Datei in C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ Ordner

  2. Gehen Sie dann auf SQL-Software, Rechtsklick auf „Datenbanken“ und klicken Sie auf „Attach“ Option anhängen zu öffnen Dialogfeld Datenbanken

  3. Klicken Sie auf die Schaltfläche „hinzufügen“ Datenbankdateien von C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\ Ordner zu öffnen und Suchen

  4. Klicken Sie auf die Schaltfläche "OK". SQL Server Management Studio lädt die Datenbank aus der Datei .MDF.

10

Erste Google-Suche ergab mir diese Antwort. Also dachte ich daran, dies mit neueren Versionen von attach, detach zu aktualisieren.

Create database dbname 
On 
( 
Filename= 'path where you copied files', 
Filename ='path where you copied log' 
) 
For attach; 

Ferner, wenn Ihre Datenbank sauber Abschaltung ist (es gibt keine aktiven Transaktionen während Datenbank heruntergefahren wurde) und Sie nicht Protokolldatei haben, können Sie unter Methode verwenden, wird SQL Server eine neue Transaktionsprotokolldatei erstellen ..

Create database dbname 
    On 
    ( 
    Filename= 'path where you copied files' 
    ) 
    For attach; 

, wenn Sie keine Transaktionsprotokolldatei angeben, wird SQL versuchen im Standardpfad suchen und versuchen, es zu verwenden, unabhängig davon, ob Datenbank war sauber Abschaltung oder nicht ..

Hier ist, was MSDN muss dazu sagen ..

Wenn eine schreibgeschützte Datenbank über eine einzelne Protokolldatei verfügt und Sie keinen neuen Speicherort für die Protokolldatei angeben, sucht die attach-Operation am alten Speicherort nach der Datei. Wenn es gefunden wird, wird die alte Protokolldatei verwendet, unabhängig davon, ob die Datenbank sauber heruntergefahren wurde. Wenn jedoch die alte Protokolldatei nicht gefunden wird und die Datenbank ordnungsgemäß heruntergefahren wurde und keine aktive Protokollkette vorhanden ist, versucht die Anfügeoperation, eine neue Protokolldatei für die Datenbank zu erstellen.

Es gibt einige Einschränkungen mit diesem Ansatz und einige Nebenwirkungen auch ..

Operationen 1.attach-and-lösen beide deaktivieren Cross-Datenbank Besitzverkettung für die Datenbank
2.Database vertrauenswürdig ist ausgeschaltet
3.Das Entfernen einer schreibgeschützten Datenbank verliert Informationen über die differenziellen Basen von differenziellen Sicherungen.

meisten importantly..you können keine Datenbank mit aktuellen Versionen zu einer früheren Version anhängen

Referenzen:
https://msdn.microsoft.com/en-in/library/ms190794.aspx

+0

Was ist mit den Pausen? – cybermonkey

+1

@cybermonkey: einige Formatierungsproblem, kann nicht abrufen, aber jetzt aktualisiert – TheGameiswar

+0

Woah, das war .. schnell. Wenn ich solche Sachen kommentiere, kümmert sich der Autor oft nicht darum, das Problem zu beheben. – cybermonkey

7

Von einem Skript (eine, die funktioniert):

CREATE DATABASE Northwind 
ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind.mdf') 
LOG ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\Northwind_log.ldf') 
GO 

offensichtlich aktualisieren Sie den Pfad:

C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA

, wo Ihre MDF- und LDF befinden.

0
use test 
go 
alter proc restore_mdf_ldf_main (@database varchar(100), @mdf varchar(100),@ldf varchar(100),@filename varchar(200)) 
as 
begin 
begin try 
RESTORE DATABASE @database FROM DISK = @FileName 
with norecovery, 
MOVE @mdf TO 'D:\sql samples\sample.mdf', 
MOVE @ldf TO 'D:\sql samples\sample.ldf' 
end try 
begin catch 
SELECT ERROR_MESSAGE() AS ErrorMessage; 
print 'Restoring of the database ' + @database + ' failed'; 
end catch 
end 

exec restore_mdf_ldf_main product,product,product_log,'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\product.bak' 
4

Ich habe eine Antwort für Sie Ja, ist es möglich.

Zum

SQL Server Management Studio> wählen Sie Datenbank> klicken Sie auf

anhängen

Dann wählen und MDF- und LDF-Datei hinzufügen. Klicken Sie auf OK.

Verwandte Themen