用日志文件备份sqlserver

USE [TestDB] 
GO 
SET ANSI_NULLS ON
GO 
SET QUOTED_IDENTIFIER ON
GO 
CREATE PROCEDURE [BackupDatabase](@FolderPath varchar(500)) 
as
DECLARE @FullPath varchar(1000) 
set @FullPath = @FolderPath+ 'TestDB_'+convert(VARCHAR(4),year(getdate()))+right( '0'+convert(VARCHAR(2),MONTH(getdate())),2)+right('0'+convert(VARCHAR(2),DAY(getdate())),2)+ '.bak'
backup database [TestDB] to disk=@FullPath WITH INIT 
return

 

用这个存储过程 写作业执行 如果在回复的时候报错 如 :

因为数据库正在使用,所以无法获得对数据库的独占访问权

请使用

USE master

DECLARE @dbname VARCHAR(20)

SET @dbname = 'Test'

DECLARE @sql NVARCHAR(500)

DECLARE @spid INT
 --SPID 值是当用户进行连接时指派给该连接的一个唯一的整数

SET @sql = 'declare getspid cursor for

select spid from sysprocesses where dbid=db_id(''' + @dbname + ''')'

EXEC ( @sql )

OPEN getspid

FETCH NEXT FROM getspid INTO @spid

WHILE @@fetch_status <> -1-- 如果 FETCH 语句没有执行失败或此行不在结果集中。
    BEGIN

        EXEC ( 'kill ' + @spid ) -- 终止正常连接

        FETCH NEXT FROM getspid INTO @spid

    END

CLOSE getspid

DEALLOCATE getspid

 

posted @ 2013-07-29 18:07  Ganler1988  阅读(424)  评论(1编辑  收藏  举报