Questa query T-SQL serve per visualizzare il modello di recovery impostato in tutti i database Microsoft SQL Server:

SQL

SELECT name, recovery_model_desc
   FROM sys.databases
per vedere tutti quelli che NON sono in SIMPLE

SQL

SELECT name, recovery_model_desc
   FROM sys.databases
   WHERE recovery_model_desc != 'SIMPLE'
e settare un singolo database su SIMPLE

SQL

ALTER DATABASE [database name]
SET RECOVERY SIMPLE
E' possibile impostare su SIMPLE tutti i database che sono in FULL tramite questa query

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'
Tags:
Database75 SQL90 SQL Server100 T-SQL66
Potrebbe interessarti anche: