文档库 最新最全的文档下载
当前位置:文档库 › 数据库修复资料

数据库修复资料

目录

第1章SQL SERVER数据库的检测及修复方法简介 (2)

1.1SQL SERVER数据库的检测 (2)

1.2SQL SERVER问题数据库的修复 (2)

1.3SQL Server数据库为什么易损坏呢? (3)

1.4预防措施: (3)

1.5 应用数据库修复举例 (4)

第2章数据库日志损坏的修复 (4)

2.1步骤1: (4)

2.2步骤2: (4)

2.3步骤3: (5)

2.4步骤4: (5)

2.5步骤5: (5)

2.6步骤6: (6)

2.7步骤7: (6)

第3章数据库质疑的一般处理 (6)

第1章SQL SERVER数据库的检测及修复方法简介

随着K/3产品的推广,要求客户服务人员对SQL SERVER数据库的了解也进一步提高。在K/3的使用过程中,数据库文件被频繁地使用,由于某些原因,数据库有可能被损坏,本文将针对这种情况的数据库检测及修复方法做一简单讲解。希望各位在实际工作过程中有新的发现时,及时给我们提供信息,以便做进一步的更新。

1.1SQL SERVER数据库的检测

SQL SERVER提供了数据库检测的命令,可用DBCC CHECKDB对数据库中各个对象的分配及结构的正确性进行检测,并可通过一参数控制,将所有的错误信息显示出来。其语法如下:

DBCC CHECKDB

('database_name' [,NOINDEX | { REPAIR_ALLOW_DATA_LOSS

| REPAIR_FAST

| REPAIR_REBUILD

}]

) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]

参数说明:

'database_name'代表被检测的数据库实体名;

NOINDEX指非系统表的非聚族索引不检测;

REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST| REPAIR_REBUILD 指直接修复发现的错误,其中REPAIR_ALLOW_DATA_LOSS代表,若此错误不能修复时,系统将直接删除相关数据。带此三个参数的任一个时,数据库必须处于单用户模式,可在Enterprise Manager中的数据库属性中设置;

ALL_ERRORMSGS代表将检测到的错误信息全部显示出来,否则,对于每张表最多只显示200条错误信息;

NO_INFOMSGS代表隐藏所有的信息及占用空间的报告。

经过检测,对于错误的对象,将以OBJECT ID的形式报告具体出错的信息,可根据OBJECT ID到系统表sysobjects中查找到相关的表,即NAME。

1.2SQL SERVER问题数据库的修复

经过数据库检测后,可针对出现的问题采取相应的措施进行处理。如通过检测后,发现对象的物理存放存在问题,可用DBCC CHECKALLOC来进行修复:DBCC CHECKALLOC ('database_name' | REPAIR_REBUILD }] ) [WITH {ALL_ERRORMSGS | NO_INFOMSGS}]

若是非系统对象的索引出错,则可用DBCC DBREINDEX进行修复:

DBCC DBREINDEX ( [ 'database.owner.table_name' [, index_name [,

fillfactor ] ] ] ) [WITH NO_INFOMSGS]

以上两种情况,也可直接使用DBCC CHECKDB(‘db_name’,repair_rebuild)来修复。

另外一种情况是在进行检测时,提示无法建立数据连接,此时表明,数据库已损坏。对于这种情况,我们可采取如下措施来尝试修复。

首先,在SQL Enterprise中新建一数据库(如数据库名为test),建好数据库后,停止SQL Server Service Manager,并将客户数据库的MDF文件更名为test _data.mdf(即新建数据库的主文件名),然后用更名后的文件覆盖新建数据库同名文件,接着,启动SQL Server Service Manager。对Master数据库将系统表设置为可更改状态

Use Master

Go

sp_configure 'allow updates', 1

reconfigure with override

Go

将数据库设为紧急状态:

update sysdatabases set status = 32768 where name = ' database '

停止并重新启动SQL Server Service Manager,并重建Log文件:

DBCC TRACEON (3604)

DBCC REBUILD_LOG(' test ','test _log_ldf')

将数据库设置为单用户模式,然后进行检测:

sp_dboption ' test ', 'single user', 'true'

DBCC CHECKDB(' test ')

Go

此数据库执行CHECKDB的过程中发现一些表的索引被破坏,于是针对具体的表进行重建索引的操作:

DBCC DBREINDEX(表名)

如执行以上操作仍然不能解决,若索引破坏的表是临时表或不是关键表,则可从新建账套中引入,若是主表,则可能通过近期的备份来(部份)恢复。若没有一个备份,则无法修复。

1.3SQL Server数据库为什么易损坏呢?

以下是微软提供的一些可能引起数据库损坏的原因及一些预防措施:

1、操作问题,包括冷起动机器、热拔硬盘、删除一些数据库文件;

2、硬件问题,包括磁盘控制器的问题;

3、操作系统问题,包括与系统相关的一些致命错误。

1.4预防措施:

1、定期/不定期执行CHKDSK(不带参数),以检测硬盘物理结构并修复一些CHKDSK

报告的问题;

2、常备份数据。

1.5 应用数据库修复举例

declare @databasename varchar(255)

set @databasename='AIS20021224170730'------一定要手工输入

---------执行一般性修复还存在问题时,进行允许数据丢失的修复

---------许数据丢失的修复要求在单用户下进行,此时请退出中间层,客户端,sql的其他模块

---所有功能退出,在查询分析器master里设置数据库为单用户

exec sp_dboption @databasename, N'single', N'true'

-----在查询分析器master里,进行修复数据库

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

------还原数据库状态

exec sp_dboption @databasename, N'single', N'false'

第2章数据库日志损坏的修复

请遵照如下步骤来试图重建数据库事务日志.

注意: 由于事务日志丢失, 数据库可能有没有提交的数据.

注:都要替换成真实的数据库名字

2.1步骤1:

创建一个新的数据库,命名为原来数据库的名字.

2.2步骤2:

停止SQL Server

2.3步骤3:

把老数据库的MDF文件替换新数据库的相应的MDF文件, 并把LDF文件删除2.4步骤4:

重新启动SQL Server 服务,然后运行如下命令:

Use Master

Go

sp_configure 'allow updates', 1

reconfigure with override

Go

begin tran

update sysdatabases set status = 32768 where name = 'db_name'

-- Verify one row is updated before committing

commit tran

2.5步骤5:

停止SQL然后重新启动SQL Server 服务,然后运行如下命令:

DBCC TRACEON (3604)

DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF')

Go

2.6步骤6:

停止SQL然后重新启动SQL Server 服务,然后运行:

use master

update sysdatabases set status = 8 where name = 'db_name' Go

sp_configure 'allow updates', 0

reconfigure with override

Go

2.7步骤7:

运行dbcc checkdb(db_name)检查数据库的完整性.

第3章数据库质疑的一般处理

1、执行如下SQL(打开修改系统表的开关):

EXEC sp_configure 'allow updates', 1

RECONFIGURE WITH OVERRIDE

2、修改数据库Master中的表:sysdatabases 将 status字段数值更改为4

3、再执行如下SQL:

EXEC sp_configure 'allow updates', 0 RECONFIGURE WITH OVERRIDE

MySQL数据库开发规范1.3

平安金融科技数据库(MySQL)开发规范 作者: 简朝阳 Last Updated: 25/02/14 19:30:18 历史修订记录: 版本修订人修订时间修订内容 1.0 1.1 李海军2013-03-11 增加部分说明及修改 1.2 李海军2013-07-29 增加连接池使用说明和memory引擎的控制 1.3 李海军2014-02-25 增加了char类型,修改了timestamp的使用场合。 说明 ?本规范包含平安金融科技使用MySQL 数据库时所需要遵循的所有对象设计(数据库,表,字段),所需要遵循的命名,对象设计,SQL 编写等的规范约定。 ?所有内容都为必须严格执行的项目,执行过程中有任何疑问,请联系DBA Team 取得帮助。 概述 ?禁止明文传播数据库帐号和密码。 ?禁止开发工程师通过应用帐号登录生产数据库。 ?禁止应用在服务器安装MySQL客户端(可以安装开发包)。 ?禁止开发人员在SQL中添加Hint,Hint只能由DBA审核后添加。 ?禁止使用悲观锁定,即读锁select … for update。 ?禁止在开发代码中使用DDL语句,比如truncate,alter table … 等。 ?禁止DML语句的where条件中包含恒真条件(如:1=1)。

1. 命名规范 总则 ?数据库对象名仅可包含小写英文字母、数字、下划线(_)三类字符,并以英文字母开头。 ?数据库对象命名禁止使用MySQL保留字。 ?多个单词之间用下划线(_)分隔。 ?对象名称长度若超过限制,则使用简写/缩写命名。 1.1. 数据库命名 ?数据库以"db_"前缀+ "站点名_"前缀及其所服务的应用名称命名。 1.2. 表命名 ?所属同一模块的表必须以模块名作为前缀命名。 ?历史数据表在原表基础上增加"_his"后缀命名。 1.3. 字段命名 ?布尔意义的字段以"_flag"作为后缀,前接动词。如:表示逻辑删除意义的字段可命名为delete_flag。 ?各表间相同意义的字段(如:作为连接关系的引用字段)使用相同的字段名。 1.4. 索引命名 ?唯一索引以uk_tablename_columnnames 方式命名 ?普通索引以idx_tablename_columnnames 方式命名 ?组合索引以idx_tablename_column1_column2... 方式命名 示例 ?站点名:maymay ?模块名:order ; ?数据表:item; ?字段组成:order_item_id,add_time,raw_update_time,c1,c2,c3,c4,c5 ?标准数据库名:db_maymay_order; ?标准数据表名:order_item; ?历史数据表名:order_item_his;

SQL数据库的备份、还原、压缩与数据转移的方法.

当前,全国各级审计机关普遍应用AO系统进行现场审计,但由于被审计单位使用的财务软件种类太多,AO系统不可能提供全部财务软件数据导入模板,虽然AO现场审计实施系统2008版比2005版在模板数量上有所增加,但仍然不能完全解决各级审计机关在实际审计工作遇到的数据导入难题,只能通过后台备份数据库,然后还原到审计人员电脑中进行处理后,再一步一步导入AO中。由于审计人员大部分非计算机专业,对数据库的基本操作了解不是很多,无形中影响了计算机辅助审计的开展。为此,笔者分析了大量的被审计单位的财务系统后台数据库,其中大部分财务软件使用了SQL作为后台数据库,因此总结了SQL数据库的备份、压缩与SQL数据库数据处理的方法,供审计人员在审计工作中借鉴使用。 一、备份数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server 2、SQL Server组——>双击打开你的服务器——>双击打开数据库目录3、选择你的数据库名称(如财务数据库cwdata)——>然后点上面菜单中的工具——>选择备份数据库4、备份选项选择完全备份,目的中的备份到如果原来有路径和名称则选中名称点删除,然后点添加,如果原来没有路径和名称则直接选择添加,接着指定路径和文件名,指定后点确定返回备份窗口,接着点确定进行备份。二、还原数据库1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server;2、SQL Server组——>双击打开你的服务器——>点图标栏的新建数据库图标,新建数据库的名字自行取; 3、点击新建好的数据库名称(如财务数据库cwdata)——>然后点上面菜单中的工具——>选择恢复数据库; 4、在弹出来的窗口中的还原选项中选择从设备——>点选择设备——>点添加——>然后选择你的备份文件名——>添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)——>然后点击上方常规旁边的选项按钮; 5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻

DBCC CHECKDB 数据库或表修复

DBCC CHECKDB 数据库或表修复 MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令。 1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误。 use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) dbcc checkdb(@databasename,REPAIR_REBUILD) exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态 然后执行DBCC CHECKDB('需要修复的数据库实体的名称') 检查数据库是否仍旧存在错误。注意:修复后可能会造成部分数据的丢失。 2. DBCC CHECKTABLE 如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。 use 需要修复的数据库实体的名称 declare @dbname varchar(255) set @dbname='需要修复的数据库实体的名称' exec sp_dboption @dbname,'single user','true' dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS) dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD) ------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称exec sp_dboption @dbname,'single user','false'

如何压缩SQL Server 2005指定数据库文件和日志的大小

面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果: 1、DBCC SHRINKDATABASE (Transact-SQL) 收缩指定数据库中的数据文件和日志文件的大小。 语法 DBCC SHRINKDATABASE ( 'database_name' | database_id | 0 [ ,target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ) [ WITH NO_INFOMSGS ] 参数 'database_name' | database_id | 0 要收缩的数据库的名称或 ID。如果指定 0,则使用当前数据库。 target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比。 NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent 是可选参数。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,数据库看起来未收缩。 NOT RUNCATE 只适用于数据文件。日志文件不受影响。 TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与 TRUNCATEONLY 一起指定,将忽略 target _percent。 TRUNCATEONLY 只适用于数据文件。日志文件不受影响。 WITH NO_INFOMSGS 取消严重级别从 0 到 10 的所有信息性消息。 结果集 列名说明 DbId 数据库引擎试图收缩的文件的数据库标识号。 FileId 数据库引擎尝试收缩的文件的文件标识号。 CurrentSize 文件当前占用的 8 KB 页数。

图书管理系统数据库设计MYSQL实现

图书管理系统数据库设计 一、系统概述 1、系统简介 图书管理是每个图书馆都需要进行的工作。一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。 2、需求分析 图书管理系统的需求定义为: 1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。 2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。 3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。 4.学生直接归还图书,根据图书编码修改借阅信息 5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息 6.管理员可以注销学生信息。 通过需求定义,画出图书管理系统的数据流图:

数据流图 二、系统功能设计 画出系统功能模块图并用文字对各功能模块进行详细介绍。系统功能模块图: 三、数据库设计方案图表 1、系统E-R模型 总体E-R图: 精细化的局部E-R图: 学生借阅-归还E-R图: 管理员E-R图: 2、设计表 给出设计的表名、结构以及表上设计的完整性约束。student:

book: book_sort:

borrow:存储学生的借书信息 存储学生的归还信息 return_table:

manager: 3、设计索引 给出在各表上建立的索引以及使用的语句。 student: 1.为stu_id创建索引,升序排序 sql:create index index_id on student(stu_id asc);

2.为stu_name创建索引,并且降序排序 sql:alter table student add index index_name(stu_name, desc); 插入索引操作和结果如下所示: mysql> create index index_id on student(stu_id asc); Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table student add index index_name(stu_name desc); Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0 mysql> book: 1.为book_id创建索引,升序排列 sql:create index index_bid on book(book_id); 2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:sql:create index index_brecord on book(book_record); 插入索引的操作和结果如下所示:

在SQL Server 2008数据库中实现数据压缩

发布时间:2008.09.19 14:03 来源:赛迪网作者:林善茂 【赛迪网-IT技术报道】摘要:SQL Server 2008中有个有趣的新特性:数据压缩,利用该特性,我们可以减小数据表,索引以及分区的子集的大小。本文通过例子详细介绍如何使用该特性。 SQL Server中的数据压缩功能,最早在SQL Server 2005 SP2中出现,当时针对decimail 和numeric数据类型推出了新的存储格式--vardecimal。vardecimal存储格式允许decimal 和numeric数据类型的存储作为一个可变长度列。 这个概念已扩展在SQL Server 2008的所有固定长度的数据类型,如integer, char, 和float等数据类型。借助数据压缩,减少了存储成本,并提高查询性能,减少I / O和增加缓冲点击率。 虽然SQL Server 2008 支持 vardecimal 存储格式;但是,由于行级压缩可实现同样的目标,因此在SQL Server 2008中不推荐使用 vardecimal 存储格式。 SQL Server 2008对于表和索引,同时支持行(ROW)和页面(Page)两种压缩模式。下面对这两种数据压缩类型简单做个对比: 行压缩。行压缩可以将固定长度类型存储为可变长度存储类型。例如char(100)列储存在一个可变长度存储格式将只使用了存储量所定义的数据。储存的“ SQL Server 2008 ”,压缩后只需要存放15个字符,而非全部100个字符,从而节省了85%的存储空间。这是在SQL Server 2005 Service Pack 2中提供的vardecimal存储格式的思路的延伸。同时需要注意的是,这种压缩模式,将对所有数据类型的 NULL 和 0 值进行优化,从而使它们不占用任何字节。 页面压缩模式。这种压缩功能,建立在行压缩基础之上,通过只存储一次页面上相同事件字节来将存储的冗余数据减到最小。使用页压缩压缩表和索引,除了采用行压缩,还采用了前缀压缩和字典压缩。 数据压缩会减少的大小您的表格或索引指标,最好是先评估一下压缩后所能节省的空间。,估计节省空间在一个表或索引使用,无论是sp_estimate_data_compression_savings

用mysql数据库实现的C++图书管理系统

#include #include #include #include #include #include #include #include #include #include //改变字体颜色 #define NONE "\033[m" #define RED "\033[0;32;31m" #define GREEN "\033[0;32;32m" #define BLUE "\033[0;32;34m" #define YELLOW "\033[1;33m" #define LIGHT_RED "\033[1;31m" #define LIGHT_GREEN "\033[1;32m" #define LIGHT_BLUE "\033[1;34m" /* 在编译程序之前,请先开启mysql服务器(命令为sudo mysqld_safe &),然后再登录mysql客户端(命令为mysql -u root -p)建立数据库stu;建立数据表reader,book;具体操作语句如下: create database stu; create table reader(stu_name varchar(20),stu_phone varchar(15),stu_password varchar(10),stu_num int,debt float,lend_time double,back_time double,count int); create table book(book_name varchar(40),book_aut varchar(40),book_pre varchar(40),book_num int,book_mux int,book_con int); 编译时用如下命令: g++ $(mysql_config --cflags) 110.cpp -o t $(mysql_config --libs) */ //定义mysql数据库变量 MYSQL mysql; MYSQL_RES * results;

如何给数据库备份文件压缩

如何给数据库备份文件压缩 在新的2008版本的SQL SERVER 数据库中提出了备份压缩的概念,其基本的原理就是和RAR等压缩工具一样,可以让原有的备份文件体积更小,可以节省服务器备份空间。 同时相同数据的压缩的备份比未压缩备份小,所以压缩备份所需的设备I/O 通常较少,因此通常可大大提高备份速度。 提示: 首先SQL SERVER 2008 以上的版本可以做备份压缩 代码解析 1:我们先开启CMDSHELL 用于调用DOS命令 EXEC sp_configure'show advanced options', 1; RECONFIGURE; EXEC sp_configure'xp_cmdshell', 1; RECONFIGURE; 2:备份数据库 --你备份数据库以当天时间为后缀名 declare @filename varchar(200) set @filename='F:\data\databasbackup\differentbackup\'+conver t(char(10),getdate(),120)+'.bak'--设置备份文件的路径和文件名 print @filename backup database Alice to disk=@filename with NOINIT,NOUNLOAD,NAME='backup',NOSKIP,STATS=10,NOFORMAT--执行备份 3:压缩已备份的文件 --将压缩备份文件并删除原文件

declare @file varchar(200) set @file='D:\WinRAR\WinRAR.exe a -ep -df F:\data\databasbackup\differentbackup\'+convert(char(10), getdate(),120)+'.rar F:\data\databasbackup\differentbackup\'+convert(char(10), getdate(),120)+'.bak' EXEC MASTER..xp_cmdshell@file 4:删除压缩备份后文件 DECLARE @sql VARCHAR(500) set @sql ='del F:\data\databasbackup\differentbackup\'+convert(char(10), dateadd(dd,-2,getdate()),120)+'.rar'--找到要删除的文件并执行删除 exec MASTER..xp_cmdshell@sql --执行命令 在实际中,我们需要通过作业来控制语句的执行时间具体步骤如下 1:创建作业 2:在步骤中将以上代码写入步骤中 3:在Schedules中规定作业执行的时间

图书管理系统数据库设计-MYSQL实现

图书管理系统数据库设计-M Y S Q L实现 公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

图书管理系统数据库设计 一、系统概述 1、系统简介 图书管理是每个图书馆都需要进行的工作。一个设计良好的图书管理系统数据库能够给图书管理带来很大的便利。 2、需求分析 图书管理系统的需求定义为: 1.学生可以直接通过借阅终端来查阅书籍信息,同时也可以查阅自己的借阅信息。 2.当学生需要借阅书籍时,通过账号密码登陆借阅系统,借阅系统处理学生的借阅,同时修改图书馆保存的图书信息,修改被借阅的书籍是否还有剩余,同时更新学生个人的借阅信息。 3.学生借阅图书之前需要将自己的个人信息注册,登陆时对照学生信息。 4.学生直接归还图书,根据图书编码修改借阅信息 5.管理员登陆管理系统后,可以修改图书信息,增加或者删除图书信息 6.管理员可以注销学生信息。 通过需求定义,画出图书管理系统的数据流图:

数据流图 二、系统功能设计 画出系统功能模块图并用文字对各功能模块进行详细介绍。系统功能模块图: 三、数据库设计方案图表 1、系统E-R模型 总体E-R图: 精细化的局部E-R图: 学生借阅-归还E-R图: 管理员E-R图: 2、设计表 给出设计的表名、结构以及表上设计的完整性约束。student:

book: book_sort: borrow:存储学生的借书信息 return_table:存储学生的归还信息 ticket:存储学生的罚单信息 manager:

3、设计索引 给出在各表上建立的索引以及使用的语句。 student: 1.为stu_id创建索引,升序排序 sql:create index index_id on student(stu_id asc); 2.为stu_name创建索引,并且降序排序 sql:alter table student add index index_name(stu_name, desc); 插入索引操作和结果如下所示: mysql> create index index_id on student(stu_id asc); Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table student add index index_name(stu_name desc); Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0 mysql> book: 1.为book_id创建索引,升序排列 sql:create index index_bid on book(book_id); 2.为book_record创建索引,以便方便查询图书的登记日期信息,升序:

SQL2000清理日志文件和压缩数据库的方法

SQL2000清理日志文件和压缩数据库的方法 2010-04-15 15:08:39| 分类:SQL SERVER | 标签:|字号大中小订阅 在处理一个网站的时候发现删除了90%的数据收缩数据库后,数据库的日志文件还是很大很大! 问其他人怎么解决也问不了,周围都是菜鸟,只有拿出我三脚猫的功夫+google 才搞出个用代码来清理日志文件和压缩数据库的方法,还是比较有用的。 在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下: --第一步:清空日志 DUMP TRANSACTION databasename WITH NO_LOG --第二步:截断事务日志 BACKUP LOG databasename WITH NO_LOG --第三步:收缩数据库 DBCC SHRINKDATABASE(databasename) ============================================== SQL Server 2000日志清除的两种方法2007-10-20 11:03SQL Server 2000日志清除的两种方法在使用过程中大家经常碰到数据库日志非常大的情况,在这里介绍了两种处理方法…… 方法一: 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应 当定期进行此操作以免数据库日志过大 1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存。 2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定。 3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在 一些异常情况下往往是恢复数据库的重要依据 注意: 进行这个操作的过程,数据库负担非常重;请在数据库比较空闲的时间段进行.(比如清我的近3G 的日志文件,忙了约两分钟) 方法二: SQL Server 中讲: BACKUP LOG 数据库名WITH NO_LOG|TRUNCATE_ONLY可以截断事务日志。 但我在数据库中进行上述操作后,事务日志还是没有改变。 第一步只是将非活动的事务日志截断,并没有收缩数据库,只有进行第二项操作后,数据库才进行事务日

SQL Server数据库的MDF文件修复和恢复方法

SQL Server数据库的MDF文件修复和恢复方法 实际上,我们经常会遇到数据库恢复或修复的问题,下面我们来讲讲方法: 首先:如果备份的数据库有两个文件,分别是.LDF 和.MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。 或者在查询分析器中输入: sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF" SQL Server数据库备份有两种方式,一种是使用BACKUP DA TABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)。 1.正常的备份、恢复方式0 正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。 卸下数据库的命令:Sp_detach_db 数据库名连接数据库的命令:Sp_attach_db或者sp_attach_single_file_dbs_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16]sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name' 使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。 例子: 假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。下面我们讨论一下如何备份、恢复该数据库。 卸下数据库:sp_detach_db 'test'连接数据库:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'

Domino的压缩数据库的Load Compact命令

Domino的压缩数据库的Load Compact命令 压缩数据库 从数据库删除文档和附件时,Domino 会尝试重新利用未使用的空间,而不是立即减小文件的大小。有时,Domino 不能重新利用空间,或由于文件碎片而不能有效地重新利用空间,这一问题直到压缩数据库后才可解决。 有三种压缩样式: ?恢复空间的现场压缩 -b ?恢复空间并减小文件大小的现场压缩 -B(注意 -b -B的区别) ?拷贝样式压缩 这种样式的压缩会恢复数据库中未使用的空间,但不减小磁盘上数据库的大小。数据库的 DBIID(数据库实例标识符)不变,所以被压缩数据库与事务日志之间的关系保持不变。压缩期间用户和服务器仍可访问及编辑数据库。对于想保持或增大其大小的数据库,这种样式的压缩非常有用。 如果运行 Compact 任务时没有指定选项,Domino 将对所有启用事务日志的数据库使用这种样式的压缩。如果压缩数据库时指定 -b 选项,Domino 也将使用这种样式的压缩。 提示请尽量使用这种压缩样式,因为这种方法最快且对系统的影响最小。 这种样式的压缩既能减小数据库文件的大小又能恢复数据库中未使用的空间,比仅恢复空间的现场压缩稍慢。这种样式的压缩会为数据库分配新的DBIID,因此如果对启用记录的数据库使用该压缩样式,并使用已验证的备份实用程序,请在压缩完成后立即执行数据库的完整备份。这种压缩样式允许用户和服务器在压缩期间继续访问和编辑数据库。 如果运行 Compact 任务时没有指定选项,Domino 将对所有没有启用事务记录的数据库使用这种样式的压缩。如果根据 -B 选项,Domino 也将使用这种样式的压缩。为优化磁盘空间,建议您每周或每月使用 -B 选项对所有数据库运行一次 Compact 任务。 拷贝样式压缩创建数据库的拷贝,然后在压缩完成后删除原始数据库,所以需要额外的磁盘空间来创建数据库拷贝。这种样式的压缩实际上是创建一个具有新数据库标识符的新数据库。如果您对启用记录的数据库使用拷贝样式压缩(指定 -c 选项),压缩将分配新的 DBIID,因此,如果您使用已验证的备份实用程序,应该在压缩完成后立即执行数据库完整备份。使用拷贝样式压缩时,在压缩期间用户和服务器不能编辑数据库,如果指定 -L 选项,则仅能读取数据库。

数据库的修复方法

恢复数据库的几种方法 广汉市雒城四小―――王春燕 内容提要:随着现代科学技术的飞跃发展,数据库系统已广泛运用各个系统中,尽管数据库系统中采取了各种保护措施来防止数据库的安全和完整性被破坏,保证并行事物的正确执行,但是计算机系统中硬件的故障,软件的错误,操作员的失误以及恶意的破坏仍是不不可避免的,这些故障轻则造成事务非常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此数据库管理系统必须具有把数据库从错误状态中恢复到某一已知的正确状态的功能,这就需要数据库的恢复。 故障的种类 一、事务内部的故障 事物内部的故障有的是可以通过事物程序本身发现的,有的是不是预期的,不能由事物程序处理的。 例如:学生调校、系或调班事务,这个事务把一个学生从一个校、系(班)转另一个系(班)。 BEGIN TRANSACTION 读甲系(班)的余额BALANCE; BALANCE=BALANCE-AMOUNT;(AMOUNT为转校系(班)学生) IF (BLANCE小于0),THEN

{打印'人数不足,不能转班'; ROLLBACK;(撤销该事务) ELS 写回BALANCE1=BALANCE1+AMOUNT; COMMIT;} 这个例子所包括的两个更新操作要么全部不做,否则就会使数据库存处于不一致状态. 在这段程中,应用程序可以发现并让事物滚回,撤销已做的修改,恢复数据到正确状态。这类恢复员事物撤销(UNDO)。这是预期的故障。事物内部的故障很多是无预期的,是不能由应用程序处理的。 (二)、系统故障 系统故障是指系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU)故障,操作系统故障、DBMS代码错误、突然停电等,这类故障影响正在运行的所有事务,但不破坏数据库。这时所有的运行事务都非正常终止。发生系统故障时,一些尚未完成的事务结果可能已送入物理数据库,从而造成数据可能处于不正确状态。为保证一致性,需要清除这些事务对数据库的所有修改. 恢复系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤销所有未完成事务。 另一方面,系统重启后,恢复子系统除撤销所未完成事务外,还需要重做所有已提交事务,以将数据恢复到一致状态。 (三)、介质故障

MySQL数据库技术》实验报告模板

MySQL数据库技术实验报告 系别班级学号姓名地点 地点机房课程名称MySQL数据库技术实验名称实验1 MySQL的使用 实验过程 目的要求: (1)掌握MySQL服务器安装方法 (2)掌握MySQL Administrator的基本使用方法 (3)基本了解数据库及其对象 实验准备: (1)了解MySQL安装的软硬件要求 (2)了解MYSQL支持的身份验证模式 (3)了解MySQL各组件的主要功能 (4)基本了解数据库、表、数据库对象 实验内容: 1.安装MySQL服务器和MySQL界面工具 安装MySQL界面工具。(插入安装好的界面工具截图即可) 2.利用MySQL客户端访问数据库 (1)打开开始,程序,MySQL,MySQL server 5.1,MySQL command line client,进入MySQL客户端界面,输入管理员密码登录。 (2)在客户端输入“help”或“\h”,查看MySQL帮助菜单,仔细阅读帮助菜单的内容。

(3)实用show语句查看系统自动创建的数据库。 (4)实用USE语句选择mysql数据库为当前数据库。(5)使用SHOW TABLES 语句查看当前数据库中的表。

(6)使用了一条SELECT语句查看mysql数据库中存储用户信息表的user的内容。 (7)使用use语句将当前的数据库设定为information_schema,并查看数据库数据库中有哪些表。<图表见下页>

实验小结: 在安装MySql中有时可能不能安装不成功,那么卸载时,会存在删除不完全的情况。导致再次安装时依然不成功。 在对某个数据库进行操作之前,必须先选中该数据库。 在MySql安装过程中,注意修改字符集为gb2312或gbk, 以支持中文信息输入。

DBCC_CHECKDB用法_手工修复数据库

DBCC CHECKDB用法手工修复数据库 快速修复 DBCC CHECKDB ('数据库名', REPAIR_FAST) 重建索引并修复 DBCC CHECKDB ('数据库名', REPAIR_REBUILD) 如果必要允许丢失数据修复 DBCC CHECKDB ('数据库名'', REPAIR_ALLOW_DATA_LOSS) 如果出现错误:未处理修复语句。数据库需处于单用户模式下。 可以先启用单用户模式,方法如下执行存储过程: Use master go sp_dboption 数据库名, single, true exec sp_dboption Database 'single user','fales'--多用户模式 --更改成单用户 alter database ams2 set single_user with rollback immedi ate --还原数据库为多用户模式 alter database ams2 set multi_user with rollback immediate ############################################################ ############################################################ 手工修复数据库试例 操作步骤: ---------------------------------------------------------------------------------------------- 进入SQL查询分析器,执行语句: --检查数据库完整性 dbcc checkdb('ams1')

数据库过大压缩处理方法

棠湖宾馆问题处理报告 第一步备份数据库 把备份数据库到F:\\备份数据库 第二步附加数据库并命名为mjhis60_cl 第三步删除mjhis60_cl中数据,准备导入数据前准备 --在查询分析器中选择附加的数据库mjhis60_cl运行: select 'delete '+name FROM SYSOBJECTS WHERE TYPE = 'U' --然后把返回的结果集复制,新建一个查询分析器窗口,把复制的内容粘贴下运行!在删除过程中报错,删除中断,原因是数据库提示应该DBCC检查日志 第四步使用DBCC check(mjhis60-cl) 发现索引错误(如图),然后进一步修复: --单用户模式 alter database mjhis60_cl set single_user with rollback immediate go --快速修复 DBCC CHECKDB ('mjhis60_cl', REP AIR_F AST) go --重建索引并修复 DBCC CHECKDB ('mjhis60_cl', REP AIR_REBUILD) --如果必要允许丢失数据修复 DBCC CHECKDB ('mjhis60_cl', REP AIR_ALLOW_DATA_LOSS)

--还原数据库为多用户模式 alter database test set multi_user with rollback immediate 第五步DCBB检查数据库,发现无问题,然后继续删除数据 DBCC CHECKDB ('mjhis60_cl') 第六步压缩数据库 --1.清空日志 DUMP TRANSACTION 库名WITH NO_LOG --2.截断事务日志: BACKUP LOG 数据库名WITH NO_LOG --3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至xxM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 --选择数据文件--在收缩方式里选择收缩至xxM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

SQL Server重建指定数据库恢复方法

SQL Server 数据库的MDF 文件修复和恢复方法 实际上,我们经常会遇到数据库恢复或修复的问题,下面我们来讲讲方法: 首先:如果备份的数据库有两个文件,分别是.LDF 和.MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF 文件,就可以了。或者在查询分析器中输入:sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF" SQL Server 数据库备份有两种方式,一种是使用BACKUP DATABASE 将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf 和日志文件ldf 的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server 企业管理器)和SQL Server Quwey Analyser(SQL Server 查询分析器)。1.正常的备份、恢复方式0 正常方式下,我 们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。卸下数据库的命令: Sp_detach_db 数据库名连接数据库的命令:Sp_attach_db 或者sp_attach_single_file_dbs_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,……16]sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name' 使用此方法可以正确恢复SQL Sever7.0 和SQL Server 2000 的数据库文件,要点是备份的时候一定要将mdf 和ldf 两个文件都备份下来,mdf 文件是数据库数据文件,ldf 是数据库日志文件。例子:假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。下面我们讨论一下如何备份、恢复该数据库。卸下数据库:sp_detach_db 'test'连接数据库:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'

设置SQL Server 2008自动压缩备份数据库

我们通常在维护数据库的时候,都会建立一个备份的机制,在SQL Server中,我们就可以通过如下的方法来实现: 如果SQL Server代理没有启动,我们先把其启动,然后新建立一个作业,名称命名为“MyDb完全备份”,在分类下面选择“数据库维护”,然后新建立作业第一个步骤,步骤名为“对数据进行完全备份”,然后在命令框中输入如下的SQL代码: DECLARE @strSql VARCHAR(1000) ,@strSqlCmd VARCHAR(1000) ,@timeDateDiff INT SET @timeDateDiff = DATEDIFF(week,0,GETDATE())--'1900-01-01', Here '0' stands for '1900-01-01', SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN @timeDateDiff -1 ELSE @timeDateDiff END SET @strSql='D:\DataBase\BackData\MyDb_' -- 备份目录及备份的文件 头,'D:\DataBase\BackData\目录必须存在 +CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全备份日期+'_0100' -- 完全备份时间 +'完全备份' SET @strSqlCmd= @strSql+'.BAK' --备份文件的扩展名 BACKUP DATABASE [MyDb] TO DISK = @strSqlCmd WITH INIT ,NOUNLOAD ,NAME = N'MyDb 备份' ,NOSKIP ,STATS = 10 ,NOFORMAT 操作如图一:

相关文档
相关文档 最新文档