Site Search:
Sign in | Join | Help
4Penny.net

SQL Server (T-SQL)

Comments and notes on SQL Server 2000, 2005, and T-SQL

May 2007 - Posts

  • Setting the Recovery Model of a database to Simple

    We run a web hosting company and we use SQL Server, it happens that we put up several new SQL databases a month. Invariably, the developer will forget to put the new database in 'Simple' recovery model. If you leave a database in 'Full' mode and only run regular backups, the transaction logs won't truncate and the drive will fill up.

     That's what happened today (sigh), so I searched and found a script on http://richardteachout.com/Blog/tabid/165/EntryID/64/Default.aspx. I have made a small mod and I am reprinting the script here so that I don't lose it.

     USE master
    GO
    
    
    -- Declare a variable to store the value [database name] returned by FETCH.
    DECLARE @dbname sysname, @cmd varchar(1000)
    
    
    -- Declare a cursor to iterate through the list of databases
    DECLARE db_recovery_cursor CURSOR FOR 
    SELECT name from sysdatabases
    -- Open the cursor
    OPEN db_recovery_cursor
    
    
    -- Perform the first fetch and store the value in a variable.
    FETCH NEXT FROM db_recovery_cursor INTO @dbname
    
    
    -- loop through cursor until no more records fetched
    WHILE @@FETCH_STATUS = 0
    
    
    BEGIN
    IF (SELECT DATABASEPROPERTYEX(@dbname,'RECOVERY')) <> 'SIMPLE' and @dbName <> 'tempdb' BEGIN
    
    
    -- create the alter database command for each database
    SET @cmd = 'ALTER DATABASE ' + @dbname + ' SET RECOVERY SIMPLE'
    
    
    -- alter each dataabase setting the recovery model to FULL
    EXEC(@cmd)
    
    
    PRINT @dbname 
    end
    
    
    FETCH NEXT FROM db_recovery_cursor INTO @dbname
    END
    
    
    -- close the cursor and deallocate memory used by cursor
    CLOSE db_recovery_cursor
    
    
    DEALLOCATE db_recovery_cursor
    
    
     

    As always, your comments are welcome. If this post was helpful, please link to our site.