2013-08-19 13 views
33

Per qualche motivo devo disinstallare SQL Server 2008 R2, ma prima che ho copiato due file (.mdf e .ldf) del mio database daripristino database da mdf e ldf file di SQL Server 2008

C : \ Program files (x86) \ Microsoft SQL Server \ MSSQL10_50.MSSQL2008 \ MSSQL \ DATA

Ora, la domanda è, è possibile per me per ripristinare il database da questi file nel mio nuovo SQL Server 2008 installato R2.

Se sì: allora come posso fare?

+0

Sì, è possibile [allegare un database] (http://technet.microsoft.com/en-us/library/ms190209.aspx) quando si dispone dei due file. –

+0

ho provato a farlo ma dà un errore si è verificato durante il collegamento del database. –

+0

errore dicendo di non poter aprire il file fisico. Errore 5 del sistema operativo (accesso negato) Errore server MSSQL 5120 –

risposta

81

Sì, è possibile. I passi sono:

  1. In primo luogo mettere il file .mdf e .ldf nella cartella C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\

  2. Poi vai a software sql, tasto destro del mouse “Database” e fare clic su “Allega” opzione per aprire il Allega la finestra di dialogo

  3. database Fare clic sul pulsante “Aggiungi” per aprire e individuare file di database da cartella C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\

  4. Fare clic sul pulsante "OK". SQL Server Management Studio carica il database dal file .MDF.

10

Prima ricerca su google mi ha dato questa risposta. Quindi ho pensato di aggiornare questo con la versione più recente di attach, staccare.

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

Inoltre, se il database viene arrestato in modo pulito (non ci sono transazioni attive, mentre database è stato di arresto) e non avete file di registro, è possibile utilizzare sotto metodo, SQL server creerà un nuovo file di log delle transazioni ..

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

se non si specifica il file di registro delle transazioni, SQL cercherà di guardare nel percorso predefinito e cercherà di usarlo indipendentemente dal fatto di database è stato arrestato in modo pulito o no ..

Ecco cosa MSDN ha da dire su questo ..

Se un database di lettura-scrittura ha un singolo file di registro e non si specifica un nuovo percorso per il file di registro, l'operazione di collegamento cerca nella vecchia posizione del file. Se viene trovato, viene utilizzato il vecchio file di registro, indipendentemente dal fatto che il database sia stato chiuso in modo pulito. Tuttavia, se il vecchio file di registro non viene trovato e se il database è stato chiuso in modo pulito e non ha una catena di log attiva, l'operazione di collegamento tenta di creare un nuovo file di registro per il database.

Ci sono alcune restrizioni con questo approccio e alcuni effetti collaterali troppo ..

1.attach-e-staccare le operazioni sia disable tra database concatenamento della proprietà per il database
2.Database affidabile è disattivato
3.Il distacco di un database di sola lettura perde informazioni sulle basi differenziali dei backup differenziali.

La maggior parte dei importantly..you non si può collegare un database con le versioni più recenti di una versione precedente

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

+0

Cosa sono gli arresti completi? – cybermonkey

+1

@cybermonkey: qualche problema di formattazione, non posso richiamare, ma aggiornato ora – TheGameiswar

+0

Woah, è stato .. veloce. Spesso quando commento cose del genere, l'autore non si preoccupa mai di risolvere il problema. – cybermonkey

7

da uno script (uno che funziona):

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 

ovviamente aggiornare il percorso:

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

Per dove il vostro mdf e ldf risiedono.

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

Ho una risposta per voi Sì, è possibile.

Vai

SQL Server Management Studio> selezionare Database> cliccare sul allegare

Quindi selezionare e aggiungere mdf e file LDF. Clicca su OK.

Problemi correlati