Visualizzare e settare il recovery model di tutti i database
Questa query T-SQL serve per visualizzare il modello di recovery impostato in tutti i database Microsoft SQL Server:
per vedere tutti quelli che NON sono in SIMPLE
e settare un singolo database su SIMPLE
E' possibile impostare su SIMPLE tutti i database che sono in FULL tramite questa query
SQL
SELECT name, recovery_model_desc
FROM sys.databases
SQL
SELECT name, recovery_model_desc
FROM sys.databases
WHERE recovery_model_desc != 'SIMPLE'
SQL
ALTER DATABASE [database name]
SET RECOVERY SIMPLE
SQL
USE Master
DECLARE @dbname VARCHAR(150)
DECLARE @strSQL nvarchar(200)
-- cursore per ciclare su tutti i db non in simple, model compreso
DECLARE dbcursor CURSOR FOR
SELECT [name]
FROM sys.databases
WHERE [recovery_model_desc] = 'FULL'
AND [name] NOT IN ( 'master','msdb','tempdb') -- 'model'
OPEN dbcursor FETCH NEXT FROM dbcursor INTO @dbname
-- ciclo sui db
WHILE @@FETCH_STATUS = 0
BEGIN
-- creo la query per cambiare il model
SET @strSQL = 'ALTER DATABASE [' + @dbname + '] SET RECOVERY SIMPLE'
-- eseguo la query
EXEC SP_EXECUTESQL @strSQL
-- recuper il prossimo nome di database da processare
FETCH NEXT FROM dbcursor INTO @dbname
END
CLOSE dbcursor
DEALLOCATE dbcursor
-- per controllo visualizzo i database con il model non in simple
SELECT name, recovery_model_desc
FROM sys.databases
WHERE recovery_model_desc != 'SIMPLE'