• In SQL 2000 there was the ability to script out database objects with SQL code. I saved the files and copied them to my 2005 server and it works there. Maybe MS has included the files again in more current versions, or there is another way to do it ??

    Anyway, my process is to bring these files onto the server and put them in a folder (hardcoded later) C:\ObjectScripts\:

    scptxfr.exe, scptxfr.rll, scriptin.exe, sqlresld.dll

    Then I built a routine to script out all the objects from all user databases into their own folders. I find this useful as a way to save all the object definitions such as stored procedure code, table definitions, triggers etc as another level of backup, without having to restore an entire database. Not sure if it could be used to just script SPs.

    declare @DatabaseName varchar(100)

    declare @code varchar(1000)

    declare @DBCount int

    -- Load non-System Database names into temp table

    select name, ' ' as Run into #programs

    from master.sys.databases

    where database_id > 4 -- non system

    order by name

    NextDB:

    -- Get database name to process

    set @DatabaseName = ' '

    set @DatabaseName = (select top 1 name from #programs where run <> 'Y')

    --- Script out Database objects

    set @code = '"C:\ObjectScripts\scptxfr.exe" /s DB07 ' + ' /d ' + @DatabaseName + ' /I /F '

    + 'I:\ObjectScripts\' + @DatabaseName + '_structure_'+ convert(varchar(8),getdate(),112) + '' + ' /q /A /r'

    EXEC master..xp_cmdshell @code

    -- Mark database as processed

    update #programs set run = 'Y' where @DatabaseName = Name

    -- Count if any more to process. If not, exit

    set @DBCount = (select count(*) from #programs where run <> 'Y')

    if @DBCount = 0 goto Finished

    goto NextDB

    Finished:

    I also use "forfiles" periodically to delete the backups after "X" weeks.