对公司的机器真是无语了,为了节省空间,开始疯狂清理磁盘,一个不小心把企业管理器给卸了,
用惯了企业管理器对数据库进行备份和还原,还真有点傻了,虽然我不常这样操作,
1,使用SQL最简单备份,还原数据库
- /* 备份 */
- backup database Test to disk=‘D:/Test.bak’
- /* 还原 */
- restore database Test from disk=‘D:/Test.bak’
2,为了方便以后的使用,开始对语句进行简单的封装->存储过程
1,备份
- /*******************************************************
- 备份数据库
- *******************************************************/
- if exists(select 1 from sys.procedures where name=‘sp_BackupDB’)
- drop procedure sp_BackupDB
- go
- create procedure sp_BackupDB
- @savePath nvarchar(4000) — 备份数据库保存位置(目录)
- ,@dbName nvarchar(4000) — 需要进行备份的数据库
- ,@bakName nvarchar(4000) — 备份文件的名称(不含扩展名)
- as begin
- declare @sql nvarchar(4000)
- /* 验证路径 */
- if(charindex(‘/’,reverse(@savePath))!=1) begin
- set @savePath=@savePath+‘/’
- end
- /* 拼SQL并执行 */
- set @sql=‘backup database ‘+@dbName+‘ to disk=’”+@savePath+@bakName+‘.bak’”
- exec sp_executesql @sql
- /* 返回执行结果(1=成功,0=失败) */
- if(@@error=0) begin
- return 1
- end
- return 0
- end
2,还原
- /*******************************************************
- 还原数据库
- *******************************************************/
- if exists(select 1 from sys.procedures where name=‘sp_RestoreDB’)
- drop procedure sp_RestoreDB
- go
- create procedure sp_RestoreDB
- /* 数据库还原后的保存位置(目录)(使用系统默认保存位置:-1) */
- @savePath nvarchar(4000)
- ,@backFile nvarchar(4000) — 需要还原的数据库备份文件
- ,@defaultName nvarchar(4000) — 数据库原始名称(备份的原数据库名称)不包含扩展名
- /* 为数据库重命名(使用数据库默认名称:-1)不包含扩展名
- 如果目录已存在该名称的数据库,将会被覆盖 */
- ,@dbName nvarchar(4000)
- as begin
- declare @newName nvarchar(4000),@sql nvarchar(4000)
- /* 获取数据库名称 */
- if(@dbName=‘-1’) begin
- set @newName=@defaultName
- end else begin
- set @newName=@dbName
- end
- /* 结束所有对当前数据库的连接 */
- if exists(select 1 from sys.sysprocesses where dbid=db_id(@defaultName)) begin
- declare #cs_spid cursor — 声明游标
- for
- select #cs_spid=convert(varchar,spid) from sys.sysprocesses where dbid=db_id(@defaultName)
- open #cs_spid
- declare @spid varchar(20)
- fetch next from #cs_spid into @spid — 赋值并前进到下一条
- while(@@fetch_status=0) begin — 在fetch失败前执行
- exec (‘kill ‘+@spid) — 结束对操作库的连接(exec执行SQL语句1)
- fetch next from #cs_spid into @spid
- end
- close #cs_spid
- deallocate #cs_spid — 释放游标
- end
- /* 创建执行语句 */
- set @sql=‘restore database ‘+@newName+‘ from disk=’”+@backFile+”‘ with replace’
- if(@savePath!=‘-1’) begin
- — 验证路径
- if(charindex(‘/’,reverse(@savePath))!=1) begin
- set @savePath=@savePath+‘/’
- end
- set @sql=@sql+‘, move ‘”+@defaultName+”‘ to ‘”+@savePath+@newName+‘.mdf’”
- set @sql=@sql+‘, move ‘”+@defaultName+‘_log’‘ to ‘”+@savePath+@newName+‘_log.ldf’”
- end
- /* 执行操作 */
- exec sp_executesql @sql — (exec执行SQL语句2)
- /* 返回执行结果(1=成功,0=失败) */
- if(@@error=0) begin
- return 1
- end
- return 0
- end
不支持SQL代码格式???