A. 数据库附加没有日志文件怎么办
文件激活失败。物理文件名称'f:\lpxjx_1.ldf'可能不正确。
无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。
消息 1813,级别 16,状态 2,第 1 行
无法打开新数据库 'lpxjx'。CREATE DATABASE 中止。
B. 怎样压缩数据库的日志文件
具体方法有3种。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。
第二步:
1.收缩特定数据库的所有数据和日志文件,执行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。
2.收缩一次一个特定数据库中的数据或日志文件,执行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收缩的文件的标识
(ID)
号,若要获得文件
ID,请使用
FILE_ID
函数或在当前数据库中搜索
sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc
shrinkfile
将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.
方法二:
第一步:
先备份整个数据库以备不测
。
第二步:
备份结束后,在Query
Analyzer中执行如下的语句:
exec
sp_detach_db
yourDBName,true
--卸除这个DB在MSsql中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在Query
Analyzer中执行如下的语句:
exec
sp_attach_single_file_db
yourDBName,'
d:\mssql\data\yourDBName_data.mdf
'
--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。
方法三:
1.
进入企业管理器,选中数据库,比如demo
2.
所有任务->分离数据库
3.
到数据库文件的存放目录,将MuOnline_log.LDF文件删除,以防万一,你可以拷出去
4.
企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
5.
记得数据库重新附加后用户要重新设置一下。
如果以后,不想要它变大:
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter
database
数据库名
set
recovery
simple
C. sql2005附加数据库出错 错误9004标题: Microsoft SQL Server Management Studio
提示很清楚----------日志损坏
请删除掉日志
重新生成日志
create database yiyaoguanli' on
(filename=N'X:\X\yiyaoguanli.mdf' ) FOR ATTACH
X:\x\为你database 'yiyaoguanli'以前的路径
再试
D. SQL Server数据库成为紧急模式怎么恢复
1、使数据库变为单用户模式
ALTER DATABASE 数据库名 SET SINGLE_USER
(当变成单用户的模式只能在同一个窗口执行语句)
2、修正数据库日志重新生成,此命令检查的分配,结构,逻辑完整性和所有数据库中的对象不正确。当您指定“REPAIR_ALLOW_DATA_LOSS”作为DBCC CHECKDB命令参数,该程序将检查和修正报告的不正确。但是,这些修正可能会导致一些数据丢失。
DBCC CheckDB (数据库名, REPAIR_ALLOW_DATA_LOSS)
3、使数据库变回为多用户模式
ALTER DATABASE 数据库名 SET MULTI_USER
E. 2012 Microsoft SQLServer Management Studio新建数据库出错
提示很清楚----------日志损坏
请删除掉日志
重新生成日志
create
database
yiyaoguanli'
on
(filename=n'x:\x\yiyaoguanli.mdf'
)
for
attach
x:\x\为你database
'yiyaoguanli'以前的路径
再试
F. SQL Server事务日志的几个常用操作
我们知道,SQL Server事务日志主要是用来记录所有事务对数据库所做的修改,如果系统出现故障,它将成为最新数据的唯一来源。日志的操作常有以下几个应用:
一、事务日志文件LDF的丢失
当我们不小删除或者LDF文件丢失的时候,数据库只剩下MDF文件,此时直接通过附加MDF是无法恢复数据库的,那我们怎么样才能恢复数据库呢?我们可以把SQL Server的日志文件分为两种形式:一类是无活动事务的日志,另一类是有活动事务的日志,我们分别根据两种情况来进行数据库恢复。
1、无活动事务的日志恢复
当文件并没有发生活动性的日志,我们就可以很容易的利用MDF文件就可以直接恢复数据库了,具体操作方法如下:
1)数据库要是没有日志,就会处于置疑的状态,我们先可以通过企业管理器中在对应数据库中点击右键,然后在“所有任务”下选择“分离数据库”把数据库进行分离;
2)利用MDF文件附加数据库生成新的日志文件,可用企业管理器中数据库点击右键选择“所有任务”下的“附加数据库”把数据库附加上。
这样就可以直接恢复好数据库了,而如果数据库的日志文件中含有活动事务,利用此方法就不能恢复数据库,所以得使用下面的方法。
2、有活动事务的日志恢复
当日志发生了事务的记录,丢失的时候,我们采用如下的方法来实现:
1)新建一个同名的数据库,如原数据库名为MYDB,然后停止SQL Server服务器,再把数据库主数据MDF文件移走,然后重新启动SQL Server服务器,新建一个同名的数据库MYDB,然后再停止SQL Server服务器,把移走的MDF文件再覆盖回来,然后再重新启动SQL Server服务器,在默认的情况下,系统表是不允许被修改的,我们需要运行以下语句才可以,在查询分析器中,选择Master数据库,然后执行:
Sp_configure 'allow updates',1
Reconfigure With Override
接着运行以下语句,把Sysdatabases表中MYDB数据库的status属性设为‘37268’,把MYDB数据库设置为紧急模式。
update sysdatabases set status=32768 where name=’MYDB’
然后再把数据库MYDB设置为单用户模式,然后重启SQL Server服务器,并把数据库MYDB设为单用户模式
Sp_dboption 'MYDB','single user', 'true'
G. oracle 重做日志作用,及其从产生到 归档的整个过程。
简单的说重做日记记录了oracle的dmlddl产生的改变,当数据库运行在归档模式下.
每当重做
日志
写满或手工/自动日志切换时,会将重做日志进行归档产生
归档日志
.
本质上说,归档日志和重做日志内容一样,
重做日志数量是根据日志组定义的,多个重做日志循环写/覆盖写入;而归档日志一经归档就不会被重写/覆盖.
归档日志用来恢复数据库使用.
归档和重做日志都可以使用logminer进行分析,帮助查看数据库变化和恢复.
H. 数据库恢复中日志文件是存在外存吗
1、正确认识日志文件。
一个Sql Server数据库最少要包含一个mdf数据文件和一个ldf日志文件。
mdf文件中包含了所有的数据库对象和数据,例如表、存储过程、用户信息等等。
ldf文件中包含(或者曾经包含)了数据库的所有事务日志,但是不要指望仅仅通过ldf日志文件来恢复数据库!!
例如,想通过ldf文件和以前的完全备份将数据恢复到某个时间点,或者由于某些原因只剩下了ldf日志文件,想通过ldf日志文还原出mdf文件等等,这些都是行不通的。当然,必须承认通过一些三方工具或特殊的手段的确可能可以通过ldf文件恢复部分的数据。即便是这样,一般情况下通过ldf文件恢复出你想要的数据的情况也是少之又少。
ldf日志文件的真正作用应该是以下几个:
做为事务日志的一个物理存储位置,让我们可以把日志从ldf文件中备份成日志备份,我们可以通过日志备份来还原数据库。
I. SQL2000 修改数据库后会有相应的日志生成, 请问在用户没有设置的情况下,日志默认保存多少天的修改记录
数据库日志是在数据库数据变化时产生的一些记录信息,这些信息一般来说是只有数据库在备份、恢复时才用到的,没有啥默认保留多少天的说法。
有效的数据库日志是指在最后一次全库备份后到现在为止的所有日志备份。
如果第一天进行了全库备份,第二天至第五天都进行了数据库的增量备份,那第二天至第五天的增量日志备份都是有效的。恢复的时候从第一天至第五天顺序恢复即可。第二天至第五天这个时间段就由系统管理员根据业务数据量情况掌握了
希望回答对你有启发