- 浏览: 82013 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
上次写了MS SQL数据库备份和恢复存储过程
详细情况见(http://www.cnblogs.com/aierong/archive/2004/05/10/8789.aspx)
自感觉功能不太齐全,就重新写了一加强版本,经过测试成功!
先将代码发布出来,大家共享。
如有发现BUG,请大家指教或EMAIL:aierong@vip.sina.com
/**//*备份数据库*/
create proc pr_backup_db
@flag varchar(20) out,
@backup_db_name varchar(128),
@filename varchar(1000) --路径+文件名字
as
declare @sql nvarchar(4000),@par nvarchar(1000)
if not exists(
select * from master..sysdatabases
where name=@backup_db_name
)
begin
select @flag='db not exist' /**//*数据库不存在*/
return
end
else
begin
if right(@filename,1)<>'' and charindex('',@filename)<>0
begin
select @par='@filename varchar(1000)'
select @sql='BACKUP DATABASE '+@backup_db_name
+' to disk=@filename with init'
execute sp_executesql @sql,@par,@filename
select @flag='ok'
return
end
else
begin
select @flag='file type error' /**//*参数@filename输入格式错误*/
return
end
end
GO
create proc pr_backup_db
@flag varchar(20) out,
@backup_db_name varchar(128),
@filename varchar(1000) --路径+文件名字
as
declare @sql nvarchar(4000),@par nvarchar(1000)
if not exists(
select * from master..sysdatabases
where name=@backup_db_name
)
begin
select @flag='db not exist' /**//*数据库不存在*/
return
end
else
begin
if right(@filename,1)<>'' and charindex('',@filename)<>0
begin
select @par='@filename varchar(1000)'
select @sql='BACKUP DATABASE '+@backup_db_name
+' to disk=@filename with init'
execute sp_executesql @sql,@par,@filename
select @flag='ok'
return
end
else
begin
select @flag='file type error' /**//*参数@filename输入格式错误*/
return
end
end
GO
/**//*创建函数,得到文件得路径*/
create function fn_GetFilePath(@filename nvarchar(260))
returns nvarchar(260)
as
begin
declare @file_path nvarchar(260)
declare @filename_reverse nvarchar(260)
select @filename_reverse=reverse(@filename)
select @file_path=substring(@filename,1,len(@filename)+1-charindex('',@filename_reverse))
return @file_path
end
GO
create function fn_GetFilePath(@filename nvarchar(260))
returns nvarchar(260)
as
begin
declare @file_path nvarchar(260)
declare @filename_reverse nvarchar(260)
select @filename_reverse=reverse(@filename)
select @file_path=substring(@filename,1,len(@filename)+1-charindex('',@filename_reverse))
return @file_path
end
GO
/**//*恢复数据库*/
CREATE proc pr_restore_db
/**//*
------------------------------------------------
Create Time: 2004-03-20
Update Time: 2004-03-29 11:05
Author: aierong
Remark: 恢复数据库
------------------------------------------------
*/
/**//*过程运行的状态标志,是输入参数*/
@flag varchar(20) out,
/**//*要恢复的数据名字*/
@restore_db_name nvarchar(128),
/**//*备份文件存放的路径+备份文件名字*/
@filename nvarchar(260)
as
/**//*返回系统存储过程xp_cmdshell运行结果*/
declare @proc_result tinyint
/**//*循环次数*/
declare @loop_time smallint
/**//*@tem表的ids列最大数*/
declare @max_ids smallint
/**//*原数据库存放路径*/
declare @file_bak_path nvarchar(260)
/**//*文件存放标志*/
declare @flag_file bit
/**//*数据库master文件路径*/
declare @master_path nvarchar(260)
declare @sql nvarchar(4000),@par nvarchar(1000)
declare @sql_sub nvarchar(4000)
declare @sql_cmd nvarchar(100)
declare @sql_kill nvarchar(100)
/**//*
判断参数@filename文件格式合法性,以防止用户输入类似d: 或者 c:a 等非法文件名
参数@filename里面必须有''并且不以''结尾
*/
if right(@filename,1)<>'' and charindex('',@filename)<>0
begin
select @sql_cmd='dir '+@filename
EXEC @proc_result = master..xp_cmdshell @sql_cmd,no_output
/**//*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/
IF (@proc_result<>0)
begin
/**//*备份文件不存在*/
select @flag='not exist'
/**//*退出过程*/
return
end
/**//*创建临时表,保存由备份集内包含的数据库和日志文件列表组成的结果集*/
create table #tem(
/**//*文件的逻辑名称*/
LogicalName nvarchar(128),
/**//*文件的物理名称或操作系统名称*/
PhysicalName nvarchar(260) ,
/**//*数据文件 (D) 或日志文件 (L)*/
Type char(1),
/**//*包含文件的文件组名称*/
FileGroupName nvarchar(128),
/**//*当前大小(以字节为单位)*/
[Size] numeric(20,0),
/**//*允许的最大大小(以字节为单位)*/
[MaxSize] numeric(20,0)
)
/**//*
创建表变量,表结构与临时表基本一样
就是多了两列,
列ids(自增编号列),
列file_path,存放文件的路径
*/
declare @tem table(
/**//*自增编号列*/
ids smallint identity,
LogicalName nvarchar(128),
PhysicalName nvarchar(260),
File_path nvarchar(260),
Type char(1),
FileGroupName nvarchar(128)
)
insert into #tem
execute('restore filelistonly from disk='''+@filename+'''')
/**//*将临时表导入表变量中,并且计算出相应得路径*/
insert into @tem(LogicalName,PhysicalName,File_path,Type,FileGroupName)
select LogicalName,PhysicalName,dbo.fn_GetFilePath(PhysicalName),Type,FileGroupName
from #tem
if @@rowcount>0
begin
发表评论
-
求每组前2名,你有几种方法?(MS SQL2000)
2004-08-23 11:55 919create table abc( i nvarchar(10 ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 1001在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1102UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
局部临时表和表变量的重复创建问题随笔
2005-04-22 11:51 920今天遇到一个需求,是根据逻辑判断动态创建局部临时表 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 750Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 776sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 758TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 896公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 820APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 9321.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
2008-09-02 07:48 8811.简介:Sql Server2005新增加了DDL触发器。与 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 736Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2224DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6909--方法0:动态SQL法declare @s varchar( ... -
sqlserver字符串合并(merge)方法汇总
2008-11-19 20:23 3615--方法1--使用游标法进行字符串合并处理的示例。--处理的数 ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1074--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1214--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
综上所述,MS SQL Server的数据库备份和恢复存储过程是通过动态SQL和系统存储过程`sp_executesql`以及`xp_cmdshell`来实现的。它们提供了灵活的方式来自动化数据库的备份和恢复任务,确保在数据丢失或系统故障时能够...
"MS SQL数据库系统备份与恢复"这一主题主要关注如何有效地保护SQL Server中的数据,以防数据丢失或系统故障。 SQL Server提供了多种备份类型,包括完整备份、差异备份、日志备份等,每种都有其特定的应用场景。完整...
本篇文章将详细介绍在MS SQL中如何进行数据库的备份和还原,以便于在数据丢失或系统故障时能迅速恢复。 一、通过企业管理器进行单个数据库备份 这是最基础的备份方式,适合于偶尔需要备份的情况。首先,打开SQL ...
在MS SQL数据库操作中,有几项关键的知识点是任何数据库管理员或开发人员都需要掌握的,包括数据库备份与恢复、SQL脚本执行以及数据库应用程序的配置。 首先,我们来探讨数据库备份与恢复。这是确保数据安全和业务...
MSSQL数据库备份程序就是用于这一目的的关键工具,它能够定期创建数据库的副本,以防数据丢失或系统故障。 "易特SQL SERVER自动备份工具"是一款专门针对MSSQL数据库设计的自动化备份解决方案。这类工具通常包含以下...
### SQL Server 数据库备份后登录名丢失问题及解决方法 #### 背景与问题概述 在进行SQL Server数据库的备份与恢复操作时,经常会出现一个棘手的问题:原本数据库中的登录名在恢复到另一台服务器后消失不见,导致...
"自动SQL数据库备份"是一个核心话题,它涉及到确保企业关键信息的完整性和防止潜在的数据丢失。下面将详细阐述这个主题的相关知识点。 首先,我们要理解SQL数据库备份的基本概念。SQL数据库是用于存储和管理结构化...
标题中的“只能还原MS SQL数据库”表明这是一个专为恢复Microsoft SQL Server数据库而设计的应用程序。在IT领域,数据库是存储和管理数据的核心组件,而SQL Server是微软公司提供的一种关系型数据库管理系统,广泛...
综上所述,利用VBScript和CMD调用SQL Server的备份命令及7-Zip压缩功能,可以创建一个高效、自动化的数据库备份解决方案。同时,结合Oracle备份的相关知识,我们可以为不同类型的数据库构建全面的数据保护策略。
使用这些资源,你可以更深入地了解如何在SQL Server 2000中执行备份和恢复操作,从而更好地保护你的数据。 总的来说,理解并熟练掌握SQL Server 2000的备份与恢复机制对于数据库管理员来说至关重要,它能确保在各种...
在MS SQL Server数据库Web管理中,管理员可以通过Web界面来执行各种数据库管理任务,例如创建和管理数据库用户、管理数据库权限、监控数据库性能、执行数据库备份和恢复等。 MS SQL Server数据库Web管理的主要功能...
本资源包"计算机软件-编程源码-ms sql 2000数据库的备份与恢复(例程下载).zip"显然专注于SQL Server 2000数据库的备份和恢复过程,这对于确保数据安全和业务连续性至关重要。 首先,我们来讨论数据库备份。在SQL ...
在当今信息技术快速发展的时代,数据库...随着信息技术的持续发展和对数据库依赖性的日益增强,数据库的备份与恢复技术将变得越来越重要,并且需要不断地进行研究和创新,以适应未来更加复杂和多样化的数据恢复需求。
完整备份是数据库备份的基础,它会保存数据库的所有数据,包括结构、数据和日志。在SQL Server 2005中,可以创建一个名为"ScoreCard 每月一次完全备份"的SQL Server代理作业来自动化这个过程。在作业的“步骤”选项...
描述中提到的“MSsql 数据库备份恢复源码”是一个程序,它支持MS SQL Server的各个版本,这意味着无论你使用的是哪个版本的SQL Server,都可以利用这个源码进行数据库的备份和恢复操作。源码的测试表明,它的运行...
标题提到的“MS sql数据库检测工具”就是专门针对MSSQL数据库进行健康检查的实用程序,它可以帮助我们识别和解决可能出现的问题。 描述中提到,这个工具能够检测出数据库中的哪些页存在问题。在MSSQL中,数据是存储...
在本文中,我们将深入探讨如何在PowerBuilder(PB)环境中与Microsoft SQL Server数据库进行交互,包括连接数据库、创建和管理数据库、备份与恢复操作以及设置ODBC数据源。这些都是在PB开发过程中至关重要的技能,...
### 基于SQL Server的数据库备份与还原 #### 一、引言 在现代信息技术领域,数据库系统作为数据管理的核心部分,在企业运营和个人信息管理中扮演着至关重要的角色。然而,无论是硬件故障还是软件错误,都可能对...
【MS SQL SERVER 全自动备份服务程序(完美版本)】是一个专为Microsoft SQL Server设计的高效备份解决方案。这个程序利用Delphi 2007开发,以实现全自动化备份流程,减轻DBA的工作负担,确保数据库的安全性。下面将...