Quantcast
Channel: Answers for "Rebuilding backup script using set based logic..."
Viewing all articles
Browse latest Browse all 6

Answer by Phil Factor

$
0
0

I reckon that the whole thing can be done a lot simpler in SQL Server 2005/2008 (and 2000 if you don't have that many archives). I couldn't do all the testing as I don't have the archives.

CREATE PROCEDURE archiveLogs
AS 
    SET NOCOUNT ON ;

    DECLARE @SQL VARCHAR(MAX)

    SELECT  @SQL=''

    SELECT  @SQL=COALESCE(@SQL, '')+'
SELECT * INTO archiveLogs.dbo.'+name+' FROM '+name
            +'
BACKUP DATABASE archiveLogs TO DISK = ''D:\DB Backups\LIVE_BACKEND_archiveLogs_'
            +name
            +''' WITH NOFORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
DROP TABLE archiveLogs.dbo.'+name+'
DROP TABLE logs.dbo.'+name+'
'
    FROM    sysobjects
    WHERE   xtype='u'
            AND LEN(name)=11
            AND LEFT(name, 4)='Logs'
            AND SUBSTRING(name, 9, 1)='_'
            AND name<'Logs'+DATENAME(YYYY, DATEADD(MM, -13, GETDATE()))+'_'
            +RIGHT('0'+CONVERT(VARCHAR(2), DATEPART(month,
                                                    DATEADD(MM, -13, GETDATE()))),
                   2)
    ORDER BY name

    IF NOT @SQL='' 
        EXEC (@sql)

Viewing all articles
Browse latest Browse all 6

Trending Articles