VB实现SQL Server数据库备份/恢复
'*************************************************************************'**模 块 名:fBackupDatabase_a'**描 述:备份数据库,返回出错信息,正常恢复,返回""'**调 用:fBackupDatabase_a "备份文件名","数据库名"'**参数说明:'** sBackUpfileName 恢复后的数据库存放目录'** sDataBaseName 备份的数据名'** sIsAddBackup 是否追加到备份文件中'**说 明:引用Microsoft ActiveX Data Objects 2.x Library'**创 建 人:邹建'**日 期:2003年12月09日
压缩数据库日志
经常在CSDN上看到网友发帖说,压缩日志文件处理不当,导致数据库损坏,甚至不能恢复数据,于是就写了一个通用的数据库日志文件压缩的存储过程来解决此问题:/*--压缩数据库的通用存储过程 压缩日志及数据库文件大小 因为要对数据库进行分离处理 所以存储过程不能创建在被压缩的数据库中--邹建 2004.03(引用请保留此信息)--*//*--调用示例 exec p_compdb 'test'--*/use master --注意,此存储过程要建在master数据库中goif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_compdb]') and OBJECTPROPERTY(id, N'IsProced
数据库备份与还原处理
利用T-SQL语句,实现数据库的备份与还原的功能体现了SQL Server中的四个知识点: 1. 获取SQL Server服务器上的默认目录 2. 备份SQL语句的使用 3. 恢复SQL语句的使用,同时考虑了强制恢复时关闭其他用户进程的处理 4. 作业创建SQL语句的使用 /*1.--得到数据库的文件目录 @dbname 指定要取得目录的数据库名 如果指定的数据不存在,返回安装SQL时设置的默认数据目录 如果指定NULL,则返回默认的SQL备份目录名--邹建 2003.10(引用请保留此信息)--*//*--调用示例 select 数据库文件目录=dbo.f_getdbpath('tempdb') ,[默认SQL S
if exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUse
-- =====================================================-- 直接查询的应用实例-- ===================================================== -- 1. 每个叶子结点的 FullName WITH stb([id],[FullName],[pid],[flag])AS( SELECT [id],CAST(RTRIM([name]) as nvarchar(4000)),[pid],1 FROM [tb] A WHERE NOT EXISTS( SELECT 1 FROM [tb] WHERE [pid]=A.[id]) UNION ALL SELECT A.[id],RTRIM(B.[name])+'/'+A.[FullName],B.[pid],A.flag+1 FROM stb A,[tb] B WHERE A.[pid]=B.[id])SELECT [id],[FullNa
SQL Server 2005 中的树形数据处理示例-1
if exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [tb]GO-- 示例数据create table [tb]([id] int PRIMARY KEY,[pid] int,name nvarchar(20))INSERT [tb] SELECT 1,0,N'中国'UNION ALL SELECT 2,0,N'美国'UNION ALL SELECT 3,0,N'加拿大'UNION ALL SELECT 4,1,N'北京'UNION ALL SELECT 5,1,N'上海'UNION ALL SELECT 6,1,N'江苏'UNION ALL SELECT 7,6,N'苏州'UNION ALL SELECT 8,7,N'常熟'UNION ALL SELECT 9,6,N'南京'UNION
BOM数据排序及分级显示
--示例数据:CREATE TABLE BomSub(Parent_item varchar(10),Sub_item varchar(10))INSERT BomSub SELECT 'A' ,'AA'UNION ALL SELECT 'A' ,'AB'UNION ALL SELECT 'AA' ,'AAA'UNION ALL SELECT 'AA' ,'AAB'GO问题描述: Parent_item是父项,Sub_item是子项,根据根据父子关系排序,并生成每个项目的层次。对于示例数据,要求结果如下:Parent_item LEVEL----------- -------A 0|-AA 1|--AAA 2|--AAB 2|-AB 1(所影响的行数为 5 行) --查询处理的存储过程CREATE PROC P_QRYASDECLARE @t
三级分类数据的排序
--示例数据:CREATE TABLE tb(ProdCateID int,ProdCateName nvarchar(10),ParentCateID int)INSERT tb SELECT 1, N'服装' ,0UNION ALL SELECT 2, N'箱包' ,0UNION ALL SELECT 3, N'内衣' ,1UNION ALL SELECT 4, N'外套' ,1UNION ALL SELECT 5, N'男箱包' ,2UNION ALL SELECT 6, N'女箱包' ,2UNION ALL SELECT 7, N'内裤' ,3UNION ALL SELECT 8, N'文胸' ,3UNION ALL SELECT 9, N'男外套' ,4UNION ALL SELECT 10,N'女大衣' ,4UNION ALL SELECT 11,N'男用钱包',5UNION ALL
树形数据转换
--测试数据create table PROJECT(id int,name nvarchar(20),parent_id int)insert PROJECT select 1,'所有项目',nullunion all select 2,'项目1',1union all select 3,'项目2',1create table task(id int,name nvarchar(20),outline varchar(10))insert task select 1 ,'任务1' ,'1'union all select 2 ,'任务1.1' ,'1.1'union all select 3 ,'任务1.1.1' ,'1.1.1'union all select 4 ,'任务1.1.2' ,'1.1.2'union all select 5 ,'任务2' ,'2'union all select 6 ,'任务2.1' ,'2.1'union all sele
展开BOM
--测试数据CREATE TABLE [dbo].[BOM_DETAIL] ( [PKID] [int] ,--IDENTITY (1, 1) NOT NULL , [BOM_HEAD_PKID] [int] NOT NULL , [CHILDREN_ITEM] [int] NOT NULL , [QTY] [decimal](10, 0) NOT NULL ) ON [PRIMARY]CREATE TABLE [dbo].[BOM_HEAD] ( [PKID] [int] ,--IDENTITY (1, 1) NOT NULL , [MASTER_ITEM] [int] NOT NULL , [QTY] [int] NOT NULL , [VER] [char] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [STATUS] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,) ON [PRIMARY]CREATE TABLE [dbo].[item] ( [item] [int] ,
树形数据的处理
--邹建2003.12(引用请保留此信息)--*/--测试数据create table tb(id int identity(1,1) not null constraint PK_tb primary key clustered,pid int,name varchar(20))insert tb select 0,'中国'union all select 0,'美国'union all select 0,'加拿大'union all select 1,'北京'union all select 1,'上海'union all select 1,'江苏'union all select 6,'苏州'union all select 7,'常熟'union all select 6,'南京'union all select 6,'无锡'union all select 2,'纽约'union all select 2,'旧金山'go--1.自定义函数--获取编码累计create fun
15.2 为该表增加1列NAME(系名),可变长,最大20个字符
--实现代码:ALTER TABLE CARD ADD 系名 varchar(20)[@more@]
15.1 将NAME最大列宽增加到10个字符(假定原为6个字符)
--实现代码:ALTER TABLE CARD ALTER COLUMN NAME varchar(10)[@more@]
14. 假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句
--实现代码:ALTER TABLE BOOKS ADD PRIMARY KEY(BNO)[@more@]
13. 查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出
--实现代码:SELECT a.CNOFROM BORROW a,BOOKS bWHERE a.BNO=b.BNO AND b.BNAME IN(N'计算方法',N'组合数学')GROUP BY a.CNOHAVING COUNT(*)=2ORDER BY a.CNO DESC[@more@]
12. 建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)
--实现代码:CREATE VIEW V_VIEWASSELECT a.NAME,b.BNAMEFROM BORROW ab,CARD a,BOOKS bWHERE ab.CNO=a.CNO AND ab.BNO=b.BNO AND a.CLASS=N'力01'[@more@]
10. 如果经常按书名查询图书信息,请建立合适的索引
--实现代码:CREATE CLUSTERED INDEX IDX_BOOKS_BNAME ON BOOKS(BNAME)[@more@]
11. 在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)
--实现代码:CREATE TRIGGER TR_SAVE ON BORROWFOR INSERT,UPDATEASIF @@ROWCOUNT>0INSERT BORROW_SAVE SELECT i.*FROM INSERTED i,BOOKS bWHERE i.BNO=b.BNO AND b.BNAME=N'数据库技术及应用'[@more@]
8. 将"C01"班同学所借图书的还期都延长一周
--实现代码:UPDATE b SET RDATE=DATEADD(Day,7,b.RDATE)FROM CARD a,BORROW bWHERE a.CNO=b.CNO AND a.CLASS=N'C01'[@more@]
9. 从BOOKS表中删除当前无人借阅的图书记录
--实现代码:DELETE A FROM BOOKS aWHERE NOT EXISTS( SELECT * FROM BORROW WHERE BNO=a.BNO)[@more@]
7. 查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出
--实现代码:SELECT a.CNOFROM BORROW a,BOOKS bWHERE a.BNO=b.BNO AND b.BNAME=N'计算方法' AND NOT EXISTS( SELECT * FROM BORROW aa,BOOKS bb WHERE aa.BNO=bb.BNO AND bb.BNAME=N'计算方法习题集' AND aa.CNO=a.CNO)ORDER BY a.CNO DESC[@more@]