请教存储过程

yefu2000 2013-01-11 11:40:32
CREATE PROCEDURE [dbo].[backstore] AS 
declare @strback varchar(2000)
declare @bakstr varchar(128)
set @bakstr=convert(varchar,getdate(),12)+convert(varchar(10),datename(hh,getdate()))+convert(varchar(10),datename(mm,getdate()))+convert(varchar(10),datename(ss,getdate()))
set @strback='BACKUP DATABASE [数据库名] TO DISK = N''E:\'+@bakstr+'数据库名'' WITH NOINIT , NOUNLOAD , NAME = N''数据库名 备份'', NOSKIP , STATS = 10, NOFORMAT'
--select @strback
exec (@strback)
GO


请教一下上面这段代码是什么含义?
它执行后的效果是什么?
...全文
280 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-01-17
  • 打赏
  • 举报
回复
1、脚本是备份数据库、 2、备份文件将会在SQLServer所在的机器上生成。 3、你要替换里面的[数据库名] 4、你可以用SQLServer Management studio,做好备份的选择之后,点击上方的【脚本】,就可以拿那个来和这个对比一下了。
xiongxyt2 2013-01-17
  • 打赏
  • 举报
回复
引用 3 楼 yefu2000 的回复:
但是,我把上面这段代码完全拷贝到查询分析器里执行,在E盘里没有发现任何bak文件呀?
备份文件在服务器的E盘里面 不是你自己的电脑的E盘
rfq 2013-01-15
  • 打赏
  • 举报
回复
数据库 备份
szm341 2013-01-11
  • 打赏
  • 举报
回复
引用 3 楼 yefu2000 的回复:
但是,我把上面这段代码完全拷贝到查询分析器里执行,在E盘里没有发现任何bak文件呀?
E盘是相对服务器而言的,会在服务器端产生备份文件
szm341 2013-01-11
  • 打赏
  • 举报
回复
用当前时间动态拼接备份文件名称,然后在E盘下生成相应备份文件 名称是用日期时月秒拼接的,估计是写错了,mm改成mi的话就是时分秒了
yefu2000 2013-01-11
  • 打赏
  • 举报
回复
但是,我把上面这段代码完全拷贝到查询分析器里执行,在E盘里没有发现任何bak文件呀?
人生无悔 2013-01-11
  • 打赏
  • 举报
回复
对数据库进行备份,执行后在你的E盘下有个bak的数据备份文件
caoyang0299 2013-01-11
  • 打赏
  • 举报
回复
备份数据库呗
Paddy 2013-01-11
  • 打赏
  • 举报
回复

CREATE PROCEDURE [dbo].[backstore] AS 
declare @strback varchar(2000) 
declare @bakstr varchar(128) 
set   --如果备份时间是2013-1-11  13:13:07,那么下面的语句执行后@bakstr = 13011113017
@bakstr=convert(varchar,getdate(),12)+convert(varchar(10),datename(hh,getdate()))+convert(varchar(10),datename(mm,getdate()))+convert(varchar(10),datename(ss,getdate())) 

--拼接备份命令 利用上面的参数作为路径一部分
set @strback='BACKUP DATABASE [数据库名] TO  DISK = N''E:\'+@bakstr+'数据库名''  WITH  NOINIT ,  NOUNLOAD ,  NAME = N''数据库名 备份'',  NOSKIP ,  STATS = 10,  NOFORMAT' 
--select @strback 
exec (@strback) 
GO 
yiyishuitian 2013-01-11
  • 打赏
  • 举报
回复
我觉得这里还少一个参数那就是数据库名,改成以下的语句应该可以了

CREATE PROCEDURE [dbo].[backstore] @databasename  varchar(50)
AS 
declare @strback varchar(2000)  
declare @bakstr varchar(128) 
 set @bakstr=convert(varchar,getdate(),12)+convert(varchar(10),datename(hh,getdate()))+convert(varchar(10),datename(mm,getdate()))+convert(varchar(10),datename(ss,getdate()))  
 set @strback='BACKUP DATABASE '+@databasename+' TO  DISK = N''E:\'+@bakstr+@databasename+'.bak''  WITH  NOINIT ,  NOUNLOAD ,  NAME = N'''+@databasename+''',  NOSKIP ,  STATS = 10,  NOFORMAT'  
--select @strback  
 exec (@strback)  
 GO  

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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