开发者

Backing up all databases + index creation scripts?

开发者 https://www.devze.com 2023-03-31 06:54 出处:网络
I was trying to backup all my SQL Server databases and came across the following script from here: DECLARE @name VARCHAR(50) -- database name

I was trying to backup all my SQL Server databases and came across the following script from here:

DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name 

SET @path = 'C:\Backup\'  

SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) 

DECLARE db_cursor CURSOR FOR  
SELECT name 
FROM master.dbo.sysdatabases 
WHERE name NOT IN ('master','model','msdb','tempdb')  

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   

WHILE @@FETCH_STATUS = 0   
BEGIN   
       SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
       BACKUP DATABASE @name TO DISK = @fileName  

       FETCH NEXT FROM db_cursor INTO @name   
END   

CLOSE db_cursor   
DEALLOCATE db_cursor

This works perfectly fine except that I'm thinking that I'll have to reconstruct all the indexes of the database after I 开发者_开发百科restore it. I wanted to know if it is possible to dump the CREATE statements for all the indexes so that I can re-run them in one-go after restoring all these database?


Is this the regular maintenance backup operation? If not, then it must add a WITH COPY_ONLY clause, otherwise it breaks the backup chain.

As a regular maintenance backup this is rather poor:

  • it ignores each database recovery model (may be different)
  • it does not do a good job of scheduling full/differential/log backup (ie. uses way too much disk space and causes way too much disaster recovery loss of data)
  • it is not error safe, one db error will fail the entire loop
  • it does not sanitize the file names generated (eg. a database named [a:b] will create an invalid file name and always fail).
  • it does not do maintenance of old backups and reclaim disk space from obsolete backups
  • it does not allow for things like backup compression
  • backup on the same disk as the database is a useless illusion of safety, you'll lose all data anyway on disk loss

But ultimately the fundamental issue is that you're looking at it from the wrong angle. Your goal is not to have a backup plan, but to have a recovery plan. Read some more here: Importance of testing your disaster recovery plan. And btw, you need a recovery plan for master too.

As for your question about indexes, I don't think you understand how SQL Server backup works at all. Start here: SQL Server: Recovering from Disasters Using Backups

0

精彩评论

暂无评论...
验证码 换一张
取 消