22 messaggi dal 05 febbraio 2009
Ciao a tutti

dopo alcuni mesi di prove varie, vorrei fare un backup del database, cioè tabelle, dati, stored, trigger, viste ecc ecc.

C'è una funziona automatica o si ricopiano i files da qualche directory????

Grazie
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
andrea99999 wrote:
Ciao a tutti

dopo alcuni mesi di prove varie, vorrei fare un backup del database, cioè tabelle, dati, stored, trigger, viste ecc ecc.

C'è una funziona automatica o si ricopiano i files da qualche directory????

un backup di SQL Server e' un'azione eseguita tramite gli apposito comandi SQL, appunto, di BACKUP {DATABASE | LOG} [nomeBD] .....;
non e' una copia di file fisici, ma una vera e propria attivita' interna eseguita dallo storage engine che effettua il dump su nastro, file, ..., del database in modo proprietario.. non e' accessibile esternamente e puo' solo essere utilizzato per successive operazione di RESTORE..
e' un'attivita' protetta transazionalmente da SQL Server, che puo' essere eseguita "a caldo", cioe' mentre vengono magari eseguite operazioni DML concorrenti, che "garantisce" un perfetto stato di congruita' logica e fisica nel caso sia necessario eseguire un ripristino da questo dump.. questa e' la funzionalita' da usare anche con SQLExpress, malgrado la possibilita' (non garantita) di eseguire anche copie fisiche dei files che costituiscono il database, in quanto operazioni di cache potrebbero essere pendenti comportando la invalidita' dei file copiati, come magari anche l'impossibilita' di procedere in quanto lo storage engine alloca dei lock a livello di file system sui database in uso.
detto cio', vedi quindi
http://msdn.microsoft.com/en-us/library/ms186865.aspx relativamente alla sinopsi del comando..
questa attivita' puo' (anzi dovrebbe) anche essere in un qualche modo schedulata, in modo da garantire delle finestre sicure di ripristino, e per non demandare il tutto all'incertezza dell'attivita' dell'utente interattivo..
con SQLExpress non e' possibile utilizzare lo scheduler di SQL Server, il SQL Server Agent, in quanto non disponibile all'utilizzo (malgrado installato), e quindi si deve aggirare l'ostacolo utilizzando altri scheduler, in primis e gratuito lo scheduler nativo del sistema operativo.. per l'occasione va scritto un apposito file contenente i comandi SQL da eseguire, che verrano richiamati dal file batch schedulato tramite l'utilizzo di SqlCMD.exe..
l'architettura quindi sara' composta dal file .sql da eseguirsi, tipicamente <backup.sql>
BACKUP DATABASE pubs TO DISK = 'c:\myBackups\pubs.bak' WITH FORMAT; </backup.sql>

richiamato dal file batch
<backup.cmd>
SqlCMD.exe -E -S(Local)\SQLExpress -i"c:\...\backup.sql" -o"c:\'c:\myBackupsBackupLog.txt" </backup.cmd>

che verra' schedulato come desiderato..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
22 messaggi dal 05 febbraio 2009
Ho rifatto il PC, ed adesso mi si pone il problema contrario, e cioè il restore.

Ho provato alcune sintassi ma non funzionano, riuscite ad aiutarmi ancora una volta???

Grazie molte
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
andrea99999 wrote:
Ho rifatto il PC, ed adesso mi si pone il problema contrario, e cioè il restore.

Ho provato alcune sintassi ma non funzionano, riuscite ad aiutarmi ancora una volta???

Grazie molte

ad esempio
USE master;
GO
RESTORE DATABASE [NomeLogicoDB]
FROM DISK = N'D:\..\..\file.Bak' WITH FILE = 1,
MOVE N'NomeLogicoPrimaryDataFile' TO N'c:\..\Data\NomeFile.Mdf', MOVE N'NomeLogiceLogDataFile' TO N'c:\..\Data\NomeFile.Ldf', NOUNLOAD, REPLACE, STATS = 10;
GO
PRINT 'Impostazione propietario';
USE [NomeLogicoDB];
EXEC dbo.sp_changedbowner @loginame = N'loginNmaer', @map = false; GO
PRINT 'Compatibility level';
ALTER DATABASE [NomeLogicoDB] SET COMPATIBILITY_LEVEL = 100; GO
PRINT 'Accesso MULTI USER';
USE [master];
ALTER DATABASE [NomeLogicoDB] SET MULTI_USER WITH NO_WAIT;


vedi pero' i BOL per la sinossi completa della sintassi supportata e per le molteplici possibilita' di impostazione..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
via NNTP pare ci siano dei problemi di formattazione del codice.. ovviamente devi andara a capo prima di ogni GO
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
22 messaggi dal 05 febbraio 2009
Ok, grazie.

Una cosa: quando ho bkappato i file si trovavano in c:\dati\sql\, adesso ho provato ad eseguire solo il comando:

restore database DBProva from disk = 'd:\BkDB\backup.bak' with replace

però vuole che i file .mdb ed il .log siano nella stessa directory di cui sopra.

Ma il file che avevo creato (backup.bak) non contiene tutti i file?? Ho ricopiato quei due files nella directory indicata sopra e mi ha effettivamente restorato il db, ma credo che qualcosa non sia corretta ...

Il file di backup l'ho creato con:

backup database DBProva to disk = 'c:\Dati\backup.bak'

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.