求救!!!DELPHI+SQL SERVER问题!!!不够可以加分!!

wand119 2002-12-20 12:21:10
如何在DELPHI中用程序实现重新启动SQL SERVER?编写的数据恢复语句要求数据库重新启动……要代码……
...全文
37 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Drate 2002-12-20
  • 打赏
  • 举报
回复
我这里有一个SQL SERVER的数据备份与恢复的存储过程,你看一看吧!

似乎不用重启SQL SERVER吧1

备份与恢复数据库的存储过程

create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复

@retmsg varchar(20) output --返回信息
AS


DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)

DECLARE @RC INT

SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0

DBCC CHECKDB(Northwind)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN

EXEC sp_addumpdevice 'disk', @DevName_data,@db_path

exec sp_addumpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END

IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END

IF @kind='restore'
BEGIN
RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END

RETURN 0
guestroad 2002-12-20
  • 打赏
  • 举报
回复
重启数据库????不好吧
日总是我哥 2002-12-20
  • 打赏
  • 举报
回复
启动:WinExec('cmd.exe /c net start MSSQLSERVER', SW_HIDE)
停止:WinExec('cmd.exe /c net stop MSSQLSERVER', SW_HIDE)

如果是在Win9x下面,请将cmd.exe替换成command.exe

//本人不确保答案正确!仅供参考!
Dhammacakkhu 2002-12-20
  • 打赏
  • 举报
回复
这种方式不好吧,数据恢复也不用重启server阿!
capollo 2002-12-20
  • 打赏
  • 举报
回复
为什么需要重启sql server?
wand119 2002-12-20
  • 打赏
  • 举报
回复
问题已经解决了。没用存储过程……谢谢大家了……结帐!!!
wand119 2002-12-20
  • 打赏
  • 举报
回复
提示信息为:
“因为数据库正在使用,所以未能获得对数据库的排它访问权……”
还有3楼的,用你的方法,数据库是停了。可是也不启动……
5楼的:备份已经做好了的……就是恢复,在查询分析器里好使的,用程序调用就说上面的话。

我很着急啊!!!!!
wand119 2002-12-20
  • 打赏
  • 举报
回复
恢复数据库时。总说数据库正在使用……重新启动SQL服务器后,在查询分析器里就好使了。

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧