通过SQL语句来备份,还原数据库
程序员文章站
2023-12-14 18:43:46
eg: 复制代码 代码如下: /* 通过sql 语句备份数据库 */ backup database mydb to disk ='c:\dbback\mydb.bak'...
eg:
/*
通过sql 语句备份数据库
*/
backup database mydb
to disk ='c:\dbback\mydb.bak'
--这里指定需要备份数据库的路径和文件名,注意:路径的文件夹是必须已经创建的.文件名可以使用日期来标示
/*
通过sql语句还原数据库
*/
use master
restore database mydb
from disk='c:\dbback\mydb.bak'
with replace
注意:很多时候不能直接还原,因为数据不是独占打开.可能用到下面的过程
--kill掉访问某个数据库的连接
create proc killspid(@dbname varchar)
as
begin
declare @sql varchar
declare @spid int
set @sql='declare currentid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''') '
fetch next from currentid into @spid
while @@fetch_status <>-1
begin
exec('kill '+@spid)
fetch next from currentid into @spid
end
close currentid
deallocate currentid
end
当kill掉用户后最好使用单用户操作数据库
sp_dboption @dbname,'single user','true'
复制代码 代码如下:
/*
通过sql 语句备份数据库
*/
backup database mydb
to disk ='c:\dbback\mydb.bak'
--这里指定需要备份数据库的路径和文件名,注意:路径的文件夹是必须已经创建的.文件名可以使用日期来标示
/*
通过sql语句还原数据库
*/
use master
restore database mydb
from disk='c:\dbback\mydb.bak'
with replace
注意:很多时候不能直接还原,因为数据不是独占打开.可能用到下面的过程
复制代码 代码如下:
--kill掉访问某个数据库的连接
create proc killspid(@dbname varchar)
as
begin
declare @sql varchar
declare @spid int
set @sql='declare currentid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''') '
fetch next from currentid into @spid
while @@fetch_status <>-1
begin
exec('kill '+@spid)
fetch next from currentid into @spid
end
close currentid
deallocate currentid
end
当kill掉用户后最好使用单用户操作数据库
复制代码 代码如下:
sp_dboption @dbname,'single user','true'