Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Creare nuovo database da file bak

1,354 views
Skip to first unread message

GM

unread,
Mar 8, 2008, 6:16:44 AM3/8/08
to
Salve a tutti, il mio problema č questo:
Ho un back up di un database MSSQL Server 2005 (un file .bak) con SQL Server
Management Studio, e mi servirebbe riuscire da questo file, a creare un
nuovo database.
Se provo a fare restore, mi chiede in quale database voglio inserire i dati,
e il database da cui ho fatto il backup non esiste piů.. quindi cosě non
riesco a fare nulla.
Se provo a creare prima un nuovo database vuoto, e poi a usare il restore
per riempirlo, mi dice che il backup non č associabile al database.. e anche
cosě non riesco a fare nulla.
Esiste un modo per ricreare un database (tabelle, relazioni, ecc) a partire
dal file bak?

Uso MSSQL Server 2005 e SQL Server Management Studio.

Grazie delle risposte!


Lorenzo Benaglia

unread,
Mar 8, 2008, 8:31:25 AM3/8/08
to
"GM" <guido...@libero.it_n0sp4m> wrote:
> Se provo a fare restore, mi chiede in quale database voglio inserire i
> dati, e il database da cui ho fatto il backup non esiste piů.. quindi cosě
> non riesco a fare nulla.

Ciao GM,

Non devi fare altro che specificare il nome del database che intendi creare
in fase di restore:

RESTORE DATABASE NuovoDB
FROM DISK = 'C:\MioBackup.bak';

Al termine del ripristino otterrai un database chiamato NuovoDB.

> Grazie delle risposte!
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org

GM

unread,
Mar 8, 2008, 9:57:29 AM3/8/08
to
Grazie per la risposta!

Dunque, ho provato ad eseguire il comando

RESTORE DATABASE NuovoDB
FROM DISK = 'C:\MioBackup.bak';

Ma mi funziona solo se ho giŕ un database con il nome NuovoDB registrato su
quell'istanza di SQLServer. (ho fatto una prova cn un database di test)

Se non esiste un database con quel nome, mi viene restituito il seguente
errore:

Msg 5133, Level 16, State 1, Line 1

Directory lookup for the file "D:\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\XXX_Data.mdf" failed with the operating system
error 3(The system cannot find the path specified.).

Msg 3156, Level 16, State 3, Line 1

File 'XXX_Data' cannot be restored to 'D:\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\XXX_Data.mdf'. Use WITH MOVE to identify a valid
location for the file.

Msg 5133, Level 16, State 1, Line 1

Directory lookup for the file "D:\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\XXX_Log.ldf" failed with the operating system
error 3(The system cannot find the path specified.).

Msg 3156, Level 16, State 3, Line 1

File 'XXX_Log' cannot be restored to 'D:\Microsoft SQL
Server\MSSQL.1\MSSQL\DATA\XXX_Log.ldf'. Use WITH MOVE to identify a valid
location for the file.

Msg 3119, Level 16, State 1, Line 1

Ho provato ad usare "WITH MOVE " per specificare un'altra directory, ma
l'errore restituito č lo stesso (perchč anche nella nuova directory il file
del database non c'č, in quanto non ce l'ho piů).

Forse ho omesso qualche altro comando da specificare in "RESTORE"?

Lorenzo Benaglia

unread,
Mar 8, 2008, 10:46:53 AM3/8/08
to
"GM" <guido...@libero.it_n0sp4m> wrote:
> Dunque, ho provato ad eseguire il comando
>
> RESTORE DATABASE NuovoDB
> FROM DISK = 'C:\MioBackup.bak';
>
> Ma mi funziona solo se ho già un database con il nome NuovoDB registrato
> su
> quell'istanza di SQLServer. (ho fatto una prova cn un database di test)
Vorrei tanto sapere IL VERO comando che hai eseguito, dato che non serve
assolutamente un database preesistente (anzi, se il backup non ha niente a
che vedere con quel db dovrai speciface l'opzione WITH REPLACE per
sovrascriverlo, altrimenti otterrai un errore in fase di restore).

> Ho provato ad usare "WITH MOVE " per specificare un'altra directory, ma

> l'errore restituito è lo stesso (perchè anche nella nuova directory il
> file
> del database non c'è, in quanto non ce l'ho più).
Quell'errore indica che il backup si riferisce ad un db i cui files
risiedevano in un percorso che ora risulta essere inesistente (o l'hai
cancellato, oppure il backup è stato effettuato su un server differente).
Specificando la clausola WITH MOVE puoi specificare il nuovo percorso dei
data file e del transaction log.
Per un esempio leggi questo thread:
http://groups.google.it/group/microsoft.public.it.sql/browse_thread/thread/a2550fb463df19ca

GM

unread,
Mar 8, 2008, 12:11:05 PM3/8/08
to
Ti ringrazio nuovamente per la risposta..

Il comando che ho eseguito era VERAMENTE QUELLO quello... però, leggendo
attentamente la tua risposta, devo specificare che
il backup è stato effettuato su un server differente (o meglio, il server è
lo stesso, ma è stato formattato, quindi suppongo che sia come se fosse un
altro server)

Leggendo il thread che mi hai segnalato, sono riuscito a fare tutto
correttamente, grazie di cuore!

Allego il codice che ho usato con successo (usando management sudio), nel
caso possa tornare utile a chi si imbatte in queto thread!

RESTORE DATABASE XXX

FROM DISK = 'E:\bck\XXX.bak'

WITH

MOVE 'XXX_data' TO 'f:\sqldata\XXX_data.mdf'

, MOVE 'XXX_log' TO 'f:\sqldata\XXX_log.ldf'

, REPLACE;


"Lorenzo Benaglia" <lben...@despammed.com> wrote in message
news:eE%239mOTg...@TK2MSFTNGP03.phx.gbl...

0 new messages