データベースのバックアップ作業は、忘れずに、できれば、自動的に実行することが大事です。データベースサーバーを起動した直後の個々のデータベースのバックアップを取っておくという考えは良いと思います。
Q7のスクリプトを、ストアドプロシージャ化にして、masterデータベースの中に作成します。
use master
go
if exists( select * from sysobjects
where name='auto_backup' and type='p')
begin
drop proc auto_backup
end
go
create proc auto_backup
as
declare @dbname sysname
declare @sql varchar(200)
declare hcur insensitive cursor for
select name from master.dbo.sysdatabases
open hcur
fetch next from hcur into @dbname
while @@fetch_status = 0
begin
if( @dbname <> 'tempdb' )
begin
select @sql = 'backup database ' + @dbname +
' to disk=''d:\backup_db\' + @dbname + '.bak'' with init'
exec( @sql )
end
fetch next from hcur into @dbname
end
close hcur
deallocate hcur
go
上記のスクリプトを、saログイン名でログインして、実行します。masterデータベースの中に、auto_backupというストアドプロシージャが登録されます。
次に、このauto_backupストアドプロシージャを、データベースサービスを起動した直後に自動的に実行されるように、次のスクリプトをsaログインでログインして実行します。
use master
go
exec sp_procoption 'auto_backup' , 'startup' , 'true'
go
このスクリプトを実行することによって、auto_backupストアドプロシージャが、データベースサービスを開始する度に、自動的に実行されます。
自動実行ストアドプロシージャの機能を活用します。
なお、with init オプションによって、既存のバックアップファイルの内容はすべて消去されますので、ご注意ください。
|