MSSQL backup e restore: differenze tra le versioni

Da Emigar.
Jump to navigation Jump to search
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:


==backup==
==salvataggio==
backup database MioDatabase to disk = '/backup/MioDatabase.bak'
go

Verificare il Recovery Model del database:
Verificare il Recovery Model del database:
SELECT name,recovery_model_desc FROM sys.databases WHERE name = 'MioDatabase'
SELECT name,recovery_model_desc FROM sys.databases WHERE name = 'MioDatabase'
GO
GO


Eventualmente modificarlo:
Per backup del solo transaction log:
ALTER DATABASE <database_name> SET RECOVERY FULL
BACKUP LOG MioDatabase TO DISK = '/backup/MioDatabase_20260611.trn' WITH INIT, COMPRESSION
GO
go

Salvataggio
backup database MioDatabase to disk = '/backup/MioDatabase.bak'
go

Per per salvare solo il transaction log:
BACKUP LOG MioDatabase TO DISK = '/backup/MioDatabase_20260611.trn' WITH INIT, FORMAT, COMPRESSION
go


Per verificare svuotamento del transaction log:
Per verificare svuotamento del transaction log:
SELECT * FROM sys.dm_db_log_space_usage;
SELECT * FROM sys.dm_db_log_space_usage;
GO
go


Con versioni per 2019:
Con versioni precedenti alla 2019:
DBCC SQLPERF(LOGSPACE);
DBCC SQLPERF(LOGSPACE);
GO
go



Riferimenti: [https://learn.microsoft.com/it-it/sql/t-sql/statements/restore-statements-transact-sql?view=sql-server-ver17]


==restore==
==ripristino==
===caso semplice===
===caso semplice===
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare
Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare
Riga 30: Riga 39:
go
go



===backup full incremental e transaction log===
===con spostamento di percorso===
RESTORE FILELISTONLY FROM DISK = '/backup/MioDatabase.bak';

RESTORE DATABASE MioDatabase
FROM DISK = '/backup/MioDatabase.bak';
WITH RECOVERY,
MOVE 'MioDatabase_Data' TO '/nuovo_percorso/MioDatabase_Data.mdf',
MOVE 'MioDatabase_Log' TO '/nuovo_percorso/MioDatabase_Log.ldf';
GO

===ripristino da completo, incrementali e transaction log===
Per restore database e transaction log:
Per restore database e transaction log:


Riga 53: Riga 73:


==post restore==
==post restore==

SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = 'MioDatabase';
GO
Eventualmente cambiare il compatibility level
Eventualmente cambiare il compatibility level
select name,compatibility_level from sys.databases
select name,compatibility_level from sys.databases

Versione attuale delle 12:19, 17 giu 2026

salvataggio

Verificare il Recovery Model del database:

SELECT name,recovery_model_desc FROM sys.databases WHERE name = 'MioDatabase'
GO

Eventualmente modificarlo:

ALTER DATABASE <database_name> SET RECOVERY FULL
go

Salvataggio

backup database MioDatabase to disk = '/backup/MioDatabase.bak'
go

Per per salvare solo il transaction log:

BACKUP LOG MioDatabase TO DISK = '/backup/MioDatabase_20260611.trn' WITH INIT, FORMAT, COMPRESSION
go

Per verificare svuotamento del transaction log:

SELECT * FROM sys.dm_db_log_space_usage;
go

Con versioni precedenti alla 2019:

DBCC SQLPERF(LOGSPACE);
go


Riferimenti: [1]

ripristino

caso semplice

Per leggere il contenuto di un backup, serve eventualmente per modificare i percorsi dei files da restorare

RESTORE HEADERONLY FROM DISK = '/backup/MioDatabase.bak';
GO


restore database MioDatabase from disk = '/backup/MioDatabase.bak' with recovery
go


con spostamento di percorso

RESTORE FILELISTONLY FROM DISK = '/backup/MioDatabase.bak';
RESTORE DATABASE MioDatabase
  FROM DISK = '/backup/MioDatabase.bak';
  WITH RECOVERY,
  MOVE 'MioDatabase_Data' TO '/nuovo_percorso/MioDatabase_Data.mdf',
  MOVE 'MioDatabase_Log' TO '/nuovo_percorso/MioDatabase_Log.ldf';
GO

ripristino da completo, incrementali e transaction log

Per restore database e transaction log:

Utile per capire quando è stato eseguito il backup dei log e quale intervallo di tempo copre:

RESTORE HEADERONLY FROM DISK='/backup/MioDB_log_001.trn';
GO
restore database MioDatabase from disk = '/backup/MioDatabase_full.bak' with norecovery
go
restore database MioDatabase from disk = '/backup/MioDatabase_incremental.bak' with norecovery
go
restore log MioDatabase from disk = '/backup/MioDatabase_log01.bak' with norecovery
go

L'ultimo backup del transaction log viene ripristinato con l'opzione recovery:

restore log MioDatabase from disk = '/backup/MioDatabase_log02.bak' with recovery
go

Per point in time:

restore log MioDatabase from disk = '/backup/MioDatabase_log02.bak' with stopat='2026-06-10T15:30:00',recovery
go

post restore

SELECT name,state_desc,recovery_model_desc FROM sys.databases WHERE name = 'MioDatabase';
GO

Eventualmente cambiare il compatibility level

select name,compatibility_level from sys.databases
go
alter database MioDatabase set compatibility_level=170
go