数据备份还原中排他锁问题的解决方案之一
2009-04-28 18:52
267 查看
问题来由:
在三丰物贸的项目中,有个关键的处理就是还原备份数据库 由于使用JAVA来实现所以必须 运用SQL语句来解决
在备份还原数据库的时候竟然出现了问题:
在网上找了好久基本上是些没用的东西!!
还好CSDN上问了专家!一下OK!
我的操作如下:
1:SQL 语句备份数据库:
BACK DATABASE inOutSell
TO DISK = 'D:/mydatabase.bak'
WITH FORMAT,
NAME = 'FULL BACK OF inOutSell'
go
描述:将数据库inOutSell数据库备份为D盘目录下mydatabase.bak文件
2:SQL 语句还原数据库:
USE inOutSell
RESTORE DATABASE inOutSell
FROM DISK = 'D:/mydatabase.bak'
WITH REPLACE
GO
描述:
将inOutSell数据库还原还原的文件在为D盘目录下的mydatabase.bak文件
3:出现这个问题是,怎么回事?
表示数据库正在使用,未能获得对数据库的排它访问权。怎么解决?
4:查看手册没有找到合适的:
5:上google查没有结果!!太杂了
=======================================
6: 上CSDN上面问:10分钟解决!爽
方式1:
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
declare @spid int
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
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
--用法
use master
exec killspid '数据库名'
=======================================
方式2:
CREATE PROC KillSpid(@DBName varchar)
AS BEGIN
DECLARE @SQL varchar
DECLARE @SPID int
SET @SQL = 'DECLARE CurrentID CURSOR FOR
SELECT spid from sysprocess 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
=======================================
方案1 、2都可以用!!
希望整理出来的文章对大家有用!!
在三丰物贸的项目中,有个关键的处理就是还原备份数据库 由于使用JAVA来实现所以必须 运用SQL语句来解决
在备份还原数据库的时候竟然出现了问题:
在网上找了好久基本上是些没用的东西!!
还好CSDN上问了专家!一下OK!
我的操作如下:
1:SQL 语句备份数据库:
BACK DATABASE inOutSell
TO DISK = 'D:/mydatabase.bak'
WITH FORMAT,
NAME = 'FULL BACK OF inOutSell'
go
描述:将数据库inOutSell数据库备份为D盘目录下mydatabase.bak文件
2:SQL 语句还原数据库:
USE inOutSell
RESTORE DATABASE inOutSell
FROM DISK = 'D:/mydatabase.bak'
WITH REPLACE
GO
描述:
将inOutSell数据库还原还原的文件在为D盘目录下的mydatabase.bak文件
3:出现这个问题是,怎么回事?
表示数据库正在使用,未能获得对数据库的排它访问权。怎么解决?
4:查看手册没有找到合适的:
5:上google查没有结果!!太杂了
=======================================
6: 上CSDN上面问:10分钟解决!爽
方式1:
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
declare @spid int
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
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
--用法
use master
exec killspid '数据库名'
=======================================
方式2:
CREATE PROC KillSpid(@DBName varchar)
AS BEGIN
DECLARE @SQL varchar
DECLARE @SPID int
SET @SQL = 'DECLARE CurrentID CURSOR FOR
SELECT spid from sysprocess 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
=======================================
方案1 、2都可以用!!
希望整理出来的文章对大家有用!!
相关文章推荐
- 数据备份还原中排他锁问题的解决方案
- 把一个用sql server 2005内置加密方法加密数据的DB从一台电脑备份后,还原到另外一台电脑上,出现的问题的处理办法
- ASP.NET备份数据与还原数据,解决数据库正在使用的问题
- 把数据库备份还原到另一个服务器时,产生孤立用户的问题及解决方案
- sqlserver数据还原或者转移后,出现孤立帐号问题的解决方案,表更改用户为DBO
- oracle数据备份还原 ,及oracle 11g备份出现空表解决方案
- C#数据备份与还原
- Oracle数据库导入还原dmp数据泵备份文件
- Windows Server 2008 R2 数据备份和还原
- mysql 数据备份、还原
- Spring MVC使用@ResponseBody返回JSON数据406以及乱码问题解决方案
- mongodb 数据备份,还原笔记
- 企业Linux服务器数据实时同步备份的解决方案
- ASP.NET2.0 GridView控件两大常见问题解决方案:自定义数据分页,类似DataGrid的VirtualItemCount功能
- WSUS2.0数据导入、导出(备份、还原)
- 一个还原备份文件的问题
- 活动目录数据备份还原
- ORACLE异机还原冷备份数据库
- MySQL 数据备份与还原
- hbase备份和还原数据