Перейти к содержимому

Хранимая процедура. BackupBD

Создать процедуру

USE [master]
GO
/****** Объект:  StoredProcedure [dbo].[BackupCopyDB]    Дата сценария: 09/12/2012 17:39:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
CREATE PROCEDURE [dbo].[BackupCopyDB] 
	-- Add the parameters for the stored procedure here
	@db nvarchar(50)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	-----------------------------------------------------
	-- путь до бэкапа
	DECLARE @storegeplace varchar(260)
	-- перемення для команды cmd
	declare @var varchar(260)
	-- гарантия почти уникальности имени файла
	declare @seckey nvarchar(12)
	-- текущая дата формата ггггммдд
	declare @a nvarchar(8) 
	-- текущее время чч:мм
	declare @b nvarchar(5)
	-- два правых символа от @b
	declare @c nvarchar(2)
	-- два левых символа от @b
	declare @d nvarchar(2)
	-----------------------------------------------------
	set @a = (select CONVERT(nvarchar(8), GETDATE(), 112)) 
	set @b = (select CONVERT(nvarchar(5), GETDATE(), 108)) 
	set @c = RIGHT(@b,2)
	set @d = LEFT(@b,2)
	-- получаем значение seckey
	set @seckey = @a +@d+@c
	-- указываем полный путь до файла бэкапа
	set @storegeplace = 'E:\'+@db+'_'+@seckey+'.bak' 
	-- указываем параметры для команды в cmd
	set @var = 'copy '+ @storegeplace + ' \\rx6600\d$\'+@db + '_'+@seckey+'.bak'
	-----------------------------------------------------
 
	print 'бэкап делается сюда ==> ' + @storegeplace
 
	BACKUP DATABASE @db
	TO  DISK = @storegeplace
	WITH NOFORMAT, NOINIT,  NAME = @db, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
 
	print 'бэкап готов '
	print 'бэкап копируется сюда ==>  \\rx6600\d$\'+@db + '_'+@seckey+'.bak'
 
	EXEC master..xp_cmdshell @var
 
END

для выполнения

USE [master]
GO
EXEC	[dbo].[BackupCopyDB]
		@db = N'buh_molniya_16072012_b'

 

Similar Posts:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *