sql事务日志备份
A. MSsql Server的事务日志简介一览
(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。
交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击埋茄提交或后退后才结束记录。每个数据库都拥有至少一个交易日志以及一个数据文件。
出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。这可以防止那些中断的交易修改数据文件。
维护交易日志
因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。这两种情况都会导致数据库停止工作。
对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。
截除过程发逗液码山哪生在备份或将旧标记点标为非活动状态时,它使得旧的交易记录可以被覆盖,但这并不会减少交易日志实际占用的磁盘空间。就算不再使用日志,它依然会占据一定的空间。因此在维护时,还需要对交易日志进行压缩。压缩交易日志的方法是删除非活动记录,从而减少日志文件所占用的物理硬盘空间。
通过使用DBCC SHRINKDATABASE语句可以压缩当前数据库的交易日志文件,DBCC SHRINKFILE语句用来压缩指定的交易日志文件,另外也可以在数据库中激活自动压缩操作。当压缩日志时,首先会将旧记录标记为非活动状态,然后将带有非活动标记的记录彻底删除。根据所使用的压缩方式的不同,你可能不会立即看到结果。在理想情况下,压缩工作应该选在系统不是非常繁忙的时段进行,否则有可能影响数据库性能。
恢复数据库
交易记录备份可以用来将数据库恢复到某一指定状态,但交易记录备份本身不足以完成恢复数据库的任务,还需要备份的数据文件参与恢复工作。恢复数据库时,首先进行的是数据文件的恢复工作。在整个数据文件恢复完成前,不要将其设为完成状态,否则交易日志就不会被恢复。当数据文件恢复完成,系统会通过交易日志的备份将数据库恢复成用户希望的状态。如果在数据库最后一次备份后,存在多个日志文件的备份,备份程序会按照它们建立的时间依次将其恢复。
另一种被称为log shipping的过程可以提供更强的数据库备份能力。当log shipping配置好后,它可以将数据库整个复制到另一台服务器上。在这种情况下,交易日志也会定期发送到备份服务器上供恢复数据使用。这使得服务器一直处于热备份状态,当数据发生改变时它也随之更新。另一个服务器被称作监视(monitor)服务器,可以用来监视按规定时间间隔发送的shipping信号。如果在规定时间内没有收到信号,监视服务器会将这一事件记录到事件日志。这种机制使得log shipping经常成为灾难恢复计划中使用的方案。
性能优化
交易日志对数据库有重要作用,同时它对系统的整体性能也有一定影响。通过几个选项,我们可以对交易日志的性能进行优化。由于交易日志是一个连续的磁盘写入过程,在这当中不会发生读取动作。因此将日志文件放在一个独立的磁盘,对优化性能有一定作用。
另一项优化措施与日志文件的体积有关。我们可以设置日志文件的体积不超过硬盘空间的百分之几,或者确定它的大小。如果将其设置的过大会浪费磁盘空间,而如果设置的过小则会强制记录文件不断尝试扩展,导致数据库性能下降。
事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。
在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。
一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。
然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:
Error:9002, Severity:17, State:2
The log file for database ’%.*ls’ is full.
除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为 SUSPECT。有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。
另外,事务日志扩展可能导致下列情形:
· 非常大的事务日志文件。
· 事务可能会失败并可能开始回滚。
· 事务可能会用很长时间才能完成。
· 可能发生性能问题。
· 可能发生阻塞现象。
原因
事务日志扩展可能由于以下原因或情形而发生:
· 未提交的事务
· 非常大的事务
· 操作:DBCC DBREINDEX 和 CREATE INDEX
· 在从事务日志备份还原时
· 客户端应用程序不处理所有结果
· 查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息
· 未复制的事务
B. 请教sql server做过完整备份和日志备份,还需要做差异备份吗
1.差异备份是以上一个全备为基点,这个期间所有差异数据的备份。
2.日志备份是基于前一个全备+日志备份为基点,这个期间的事务日志的备份。
3.在利用全备+日志备份时,需要有序并逐个还原所有日志备份。假设要还原周六的数据,则需要上周日的全备和周一到周六的所有日志备份才可以。如果有每天的差异备份,则只需要周日的全备+周五的差异备份+周六的日志备份即可。这样还原起来方便快捷,节省时间成本。
C. SQLServer2008数据库怎样备份还原和数据恢复
在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能在SQLServerManagementStudio中还原数据库。有关详细信息,请参阅如何备份事务日志(SQLServerManagementStudio)。若要还原已加密的数据库,您必须有权访问用于加密数据库的证书或非对称密钥。如果没有证书或非对称密钥,数据库将无法还原。
认识数据库备份和事务日志备份
数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。
数据库备份
数据库备份可以手动备份和语句备份
一.手动备份数据库
1.鼠标右键选择你要进行备份的数据库-任务-备份
可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数据库备份
2.点击添加选项,选择数据库文件的存放路径
注意文件名记得加后缀.bak,便于恢复时的查找
3.你还可以在选项页面是追加到现有的备份集,还是覆盖所有的现有备份集,还可以选择备份验证完整性(建议选择),还可以选择是否压缩备份等。
二.语句备份数据库
use master goBACKUP DATABASE [test] TO DISK = N'D:Microsoft sql serverMSSQL10.MSSQLSERVERMSSQLBackup est.bak' WITH NOFORMAT, NOINIT, NAME = N'test-完整 数据库 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
数据库日志备份
首先需要注意,数据库日志的备份是基于数据库完整备份,也就是说你备份数据库日志之前你首先要先对数据库进行一次完整的备份,因为之间会涉及到坚持到检查点 lsn, 这也是本文接下来要讲的重点。
一.手动备份数据库日志
1.右键数据库-任务-备份-选择备份类型(事务日志)
2.点添加,添加日志文件备份存储路径
3.同数据库完整备份一样,你也可以选择覆盖现有备份集或者追加到现有备份集,这里现在覆盖现有备份集、验证完整性,然后确认备份
二.语句备份数据库事务日志
BACKUP LOG [test] TO DISK = N'D: est.trn' WITH NOFORMAT, INIT, NAME = N'test-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, STATS = 10GO
数据库还原
右键数据库-还原数据库-添加需要进行还原的数据库文件路径
在还原源选项中你可以选择‘源数据库’,‘源设备’。1.选择源数据库工具会自动显示该数据库之前的一些备份,然后直接选择需要还原的数据库备份集。
2.选择源设备点击后面的...,添加需要还原的数据库文件
2.点击确认还原数据库
数据库恢复
数据库恢复的前提是1.一个完整的数据库备份2.包含这个完整数据库备份的事务日志备份3.完整备份之间也可以存在数个差异备份
对于数据库维护空间始终是一个比较头疼的问题,特别是对于大型数据库而言,每天的日志文件增长是庞大的,很多数据库管理员会定时对数据库日志文件进行收缩,但是经常收缩会存在收缩完日志文件还是不能减少,这是因为存在很多活动的日志无法收缩可以用
DBCC LOGINFO('数据库名称')
我们看到
status=0的日志,代表已经备份到磁盘的日志文件;而
status=2的日志还没有备份。当我们收缩日志文件时,收缩掉的空
间其实就是
status=0的空间,如果日志物理文件无法减小,这里一
定能看到非常多status=2的记录
解决办法:1.可以分离要收缩的数据库,然后手动删除日志文件,然后附加数据库,数据库就会产生一个很小的日志文件(不推荐使用这种方法)
2.右键要出来的数据库选择“属性”-"选项",将恢复模式改成"简单",然后利用收缩工具可以讲日志文件收缩到很小,收缩完记得讲恢复模式改成"完整"
也可以用语句进行处理(dbname是你要进行收缩的数据库名,dbname_log是你要进行收缩的数据库的逻辑日志名称)
USE [master]
GO ALTER DATABASE [dbname] SET recovery SIMPLE WITH NO_WAIT GO
ALTER DATABASE [dbname] SET RECOVERY SIMPLE --简单模式
GO
USE [dbname]
GO
DBCC SHRINKFILE (N'dbname_log' , 11, TRUNCATEONLY) GO
USE [master]
GO
ALTER DATABASE [dbname] SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE [dbname] SET RECOVERY FULL
对于第一种方法不赞同使用,首先对于数据库的分离与附加有时候会破坏数据库,造成数据库无法还原,还有就是对于在线数据库也不允许进行分离操作。
对于第二种方法是slq2008收缩日志文件的一种方法,但是此方法也不能使用过于频繁,因为进行数据库恢复模式的更改会截断事务日志文件,这样的话当时利用事务日志文件进行恢复的时候检查点不能包含数据库文件,而且当你要对事务日志进行备份的时候会重新提示你需要对数据库进行完整备份。
举个例子:比如你昨天晚上进行了一次完整备份,然后同时你也进行了一次日志备份(提前日志未被截断),然后你每个小时进行过一次差异备份,最近的差异备份时间点是14点,如果此时数据库错误修改了数据,你可以立马备份一个日志文件将数据库恢复到日志备份开始到日志备份终点前的任意时间点 。
如果此时你进行了修改数据库模式,截断日志进行了收缩,那么你的数据只能恢复到昨天晚上备份的那个日志备份时间前的任意时间点,也就是今天所做的数据库更改无法再恢复了,因为日志文件已经被截断了,不知道这样解释是否明白
因为日志文件的检查点(lsn)是连续的,每一次日志备份都是在上一次备份的基础上lsn往后增加的,lsn的范围也包括了数据库文件的lsn,也只有日志文件的lsn包括了数据库文件的lsn,才能将数据库文件进行回滚。
上图中总共有三个备份文件,一个完整备份、一个差异备份、一个日志备份,大家可以注意观察完整备份的第一个lsn与最后一个lsn,和检查点
第二个差异备份文件的的第一个lsn与最后一个lsn,和检查点,最后的日志备份的第一个lsn和最后一个lsn包含了前面两个备份文件的lsn,这种情况数据库就可以恢复到日志文件备份前的任意时间点,如果日志文件没有包含数据库文件的最后一个lsn也就无法恢复了。
D. sql server需要做日志备份吗
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
一般不建议做第4,6两步
第4步不安全,有可能损坏数据库或丢失数据
第6步如果日志达到上限,则以后虚源的数据库处理会失败,在清理日志后才能恢复.
--*/
--下面的所有库名都指你要处理的数据库的库名
1.清空日志
DUMP TRANSACTION 库好庆名 WITH NO_LOG
2.截断事务日志:
BACKUP LOG 库名 WITH NO_LOG
3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(库名)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)
4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库
b.在友誉握我的电脑中删除LOG文件
c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库
此法将生成新的LOG,大小只有500多K
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
a.分离
EXEC sp_detach_db @dbname = '库名'
b.删除日志文件
c.再附加
EXEC sp_attach_single_file_db @dbname = '库名',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf'
5.为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"
--SQL语句设置方式:
EXEC sp_dboption '库名', 'autoshrink', 'TRUE'
6.如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小)
--SQL语句的设置方式:
alter database 库名 modify file(name=逻辑文件名,maxsize=20)
E. 如何还原事务日志备份 (SQL Server Management Studio)
备份必须按照其创建顺序进行还原。在还原特定的事务日志备份之前,必须先还原下列以前备份,而不回滚未提交的事务,即 WITH NORECOVERY:在特定事务日志备份之前执行的完整数据库备份和上次差异备份(如果有)。在完整数据库备份之后执行的所有事务日志备份或在特定事务日志备份之前执行的差异备份(如果您还原了差异备份)。注意使用以下“恢复状态”选项还原以前的备份: 不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。(RESTORE WITH NORECOVERY)有关使用事务日志备份的信息,请参阅使用事务日志备份。还原事务日志备份连接到相应的 Microsoft�0�2SQL Server 数据库引擎实例之后,在对象资源管理器中,单击服务器名称以展开服务器树。展开“数据库”,然后根据数据库的不同,选择用户数据库,或展开“系统数据库”,再选择系统数据库。右键单击数据库,指向“任务”,再单击“还原”。 单击“事务日志”,这将打开“还原事务日志”对话框。在“常规”页上的“数据库”列表框衡游中,选择或键入数据库名称。仅列出处于还原状态的数据库。 若要指定要还原的备份集的源和位置,请单击以下选项之一: 从数据库以前的备份选择要还原其日志备份启纳的数据库的名称。从文件或磁带单击“浏览”按钮以选择一个或多个文件或磁带作为事务日志备份的来源。选择文件或磁带,将打开“指定备份”对话框。在“备份媒体”列表框中,从列出的设备类型选择一种。若要为“备份位置”列表框选择一个或多个设备,请单击“添加”。将所需设备添加到列表框之后,单击“确定”返回到“常规”页。 在“选择用于还原的备份集”网格中,选择用于还原的备份。此网格列出了选定数据库可以使用的事务日志备份。只有在日志备份的“第一个 LSN”大于数据库的“最后一个 LSN”时,此日志备份才可用。日志备份按照它们所包含的日志序列号 (LSN) 的顺序排列,并且也必须按照这种顺序恢复。下表列出了网格的列标题并对列值进行了说明。标题值还原如果复选框处于选中状态,则指示要还原相应的备份集。备份集名称备份集的名称。备份组件已备份的组件:“数据库”、“文件”或<空白>(表示事务日志)。备份类型执行的备份类型:“完整”、“差异”或“事务日志”。服务器名称执行备份操作的数据库引擎实例的名称。数据库备份操作中所涉及的数据库名称。位置备份集在卷中的位置。第一个 LSN备份集中第一个事务的日志序列号。对于文件备份为空。最后一个 LSN备份集中最后一个事务的日志序列号。对于文件备份为空。检查点 LSN创建备份时最近一个检查点的日志序列号。完整LSN 最近的完整数据库备份的日志序列号。开始日期备份操作开始的日期和时间(按客户端的区域设置显示)。完成日期备份操作完成的日期和时间(按客户端的区域设置显示)。大小备份集的大小(字节)。用户名执行备份操作的用户的名称。过期备份集的过期日期和时间。选择下列操作之一: 时间点保留默认值(“最近状态”);或者通过单击“浏览”按钮,打开“时点还原”对话框,从中选择特定的日期和时间。 标记的事务将数据库还原为以前标记的事务。选择此选项会启动“选择标记的事务”对话框,从而显示一个网格,列出选定事务日志备份中可以使用的标记的事务。默认情况下,将一直还原到(但不包含)标记的事务为止。若要同时还原标记的事务,请选择“包含标记的事务”。下表列出了网格的列标题并对列值进行了说明。 标题值<空>显示一个用于选择标记的复选框。事务标记提交事务时,用户为标记的事务指定的名称。日期事务的提交日期及时间。事务日期和时间显示为 msdbgmarkhistory 表中所记录的日期和时间,而非客户端计算机的日期和时间。说明提交事务时,用户为标记的事务指定的说明(如果有的话)。LSN所标记事务的日志序列号。数据库提交标记的事务时所在数据库的名称。用户名提交标记事务的数据库用户的名称。若要查看或选择高级选项,请在“选择页”窗格中单击“选项”。 对于“还原到”选项,可选项有:保留复制设置将已发布的数据库还原到创建该数据库的服务器之外的服务器时,保留复制设置。此选项只能与“悄拦没回滚未提交的事务,使数据库处于可以使用的状态...”选项(等效于使用 RECOVERY 选项还原备份,将在后面予以介绍)一起使用。选中此选项等效于在 Transact-SQL RESTORE 语句中使用 KEEP_REPLICATION 选项。还原每个备份之前进行提示如果选中此选项,则在第一个备份集之后还原每个备份集之前,将显示“继续还原”对话框,询问您是否要继续按此顺序还原。此对话框显示下一个媒体集(如果可用)的名称、备份集的名称以及备份集的说明。如果对于不同媒体集必须更换磁带,则此选项特别有用。例如,如果服务器只有一个磁带设备,则可以使用此选项。待您做好继续操作的准备后,再单击“确定”。单击“否”将使数据库保持还原状态。完成上次还原之后,您可以在方便时继续按顺序还原。如果下一个备份是数据备份或差异备份,请再次使用“还原数据库”任务。如果下一个备份是日志备份,请使用“还原事务日志”任务。限制访问还原的数据库使还原的数据库仅供 db_owner、dbcreator 或sysadmin 的成员使用。选中此选项等效于在 Transact-SQL RESTORE 语句中使用 RESTRICTED_USER 选项。对于“恢复状态”选项,请指定还原操作之后的数据库状态。 回滚未提交的事务,使数据库处于可以使用的状态。无法还原其他事务日志。(RESTORE WITH RECOVERY)恢复数据库。此选项等效于 Transact-SQL RESTORE 语句中的 RECOVERY 选项。请仅在没有要还原的日志文件时选择此选项。 不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志。(RESTORE WITH NORECOVERY)使数据库处于未恢复状态。此选项等效于在 Transact-SQL RESTORE 语句中使用 NORECOVERY 选项。如果选择此选项,“保留复制设置”选项将不可用。 使数据库处于只读模式。撤消未提交的事务,但将撤消操作保存在文件中,以便可使恢复效果逆转。(RESTORE WITH STANDBY)使数据库处于备用状态。此选项等效于在 Transact-SQL RESTORE 语句中使用 STANDBY 选项。选择此选项需要您指定一个备用文件。(可选操作)在“备用文件”文本框中指定一个备用文件名。如果您使数据库处于只读模式,则必须选中此选项。您可以浏览到该备用文件,也可以在文本框中键入其路径名。
F. SQL Server 2008有几种备份方式
SQL Server 2008提供了四种备份方式分别是:完整备份、差异备份、事务日志备份、文件和文件组备份。
◆ 完整备份:备份整个数据库的所有内容,包括事务日志。该备份类型需要比较大的存储空间来存储备份文件,备份时间也比较长,在还原数据时,也只要还原一个备份文件。
◆ 差异备份:差异备份是完整备份的补充,只备份上次完整备份后更改的早明数据。相对于完整备份分来说,差异备份的数据量比完整数据备份小,备份的速度也比完整备份要快。因此,差异备份通常作为常用的备份方式。在还原数据时,要先还原前一次做的完整备份,然后还原最后一次所做的差异备份,这样才能让数据库里的数据恢复到与最后一次差异备份时的内容相同。
◆ 事务日志备份:事务日志备份只备份事务日志里的内容。事务日志记录了上一次完整备份或事务日志备份后数据库的所有变动过程。事务日志记录的是某一段时间内的数据库变动情况,因此在进行事务日志备份之前,必须要进行完整备份。与差异备份类似,事务日志备份生成的文件较小、占用时间较短,但是在还原数拍睁扒据时,除了先要还原完整备份之外,还要依次还原每个事务日志备份,而不是只还原最后一个事务日志备份(这是与差异备份的区别)。
◆ 文件和文件组备份。如果在创建数据库时,为数据库创建了多个数据库文件或文件组,可以使用该备份方式。使用文件和文件组备份方式可以只备份数据库中的某些文件,该备份方式在数据库文件非常庞大时十分有效,由于每次只袭昌备份一个或几个文件或文件组,可以分多次来备份数据库,避免大型数据库备份的时间过长。另外,由于文件和文件组备份只备份其中一个或多个数据文件,当数据库里的某个或某些文件损坏时,可能只还原损坏的文件或文件组备份。
G. sql server2000 如何备份数据库的事务日志
在要备份的数据库名称上点右键,选所有任务,然后点击数据库备份就搞定了,若还想将备份原件移到别的存储区,先将滑凯服务管理器点击停止运行,然后进哪顷c=>program files=>sql server=>李让陆mssql=>data=>选中数据库的主文件和日志文件复制粘贴即可!
H. sql server 2008 日志怎么备份
在SQL Server 7.0和SQL Server2000中,可以用下面的命令查看: DBCC log ( {dbiddbname}, [, type={01234}] ) 参数: Dbid or dbname - 任一数据库的ID或名字 type - 输出结果的类型: 0 - 最少信息(operation, context, transaction id) 1 - 更多信息(plus flags, tags, row length) 2 - 非常详细的信息(plus object name, index name,page id, slot id) 3 - 每种操作的全部信息 4 - 每种操作的全部信息加上该事务的16进制信息 默认 type = 0 要查看MSATER数据库的事务日志可以用以下命令: DBCC log (master) 释放日志空间 1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成 --收缩数据库 DBCC SHRINKDATABASE(客户资料) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。 a.分离 E X E C sp_detach_db @dbname = 'pubs' b.删除日志文件 c.再附加 E X E C sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 5.为了以后能自动收缩,做如下设置: 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩" --SQL语句设置方式: E X E C sp_dboption '数据库名', 'autoshrink', 'TRUE' 6.如果想以后不让它日志增长得太大 企业管理器--服务器--右键数据库--属性--事务日志 --将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式: alter database 数据库名 modify file(name=逻辑文件名,maxsize=20) 特别注意: 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏数据库. 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复. 另外提供一种更简单的方法,建议大家使用。 更简单的方法: 1。右建数据库属性窗口--故障还原模型--设为简单 2。右蚂指卖建数据库所有任务--收缩数据库 3。右建数据库属性窗闷逗口--故障还原模型--设为逗谨大容量日志记录
I. SQL数据库如何还原(sql数据库如何还原备份文件)
把数据库的备份文件放到服务器的任意目录下先,然旁芹后按下面的步骤做。
如何从备份设备还原备份(企业管理器)
从备份设备还原备份
展开服务器组,然后展开服务器。
展开"数据库"文件夹,右击数据库,指向"所有任务"子菜单,然后单击"还原数据库"命令。
在"还原为数据库"框中,如果要还原的数据库名称与显示的默认数据库名称不同,请在其中进行输入或选择。若要用新名称还原数据库,请输入新的数据库名称。
说明为数据库指定新名称将自动为从数据库备份中还原的数据库文件指定新名没启物称。
单击"从设备",然后单击"选择设备"。
在"还原自"下,单击"磁带"或"磁盘",然后选择还原设备。
如果没有出现设备,则单击"添加"以添加现有的备份设备或创建新的备份设备。在"还原数枯液据库"对话框内,单击"查看内容"并选择要还原的备份集。
说明此选项将扫描备份集以获得备份内容信息,该操作可能需要花费较长时间,特别是在使用磁带设备时。如果已经知道要还原的备份集,则在"备份号"中输入备份集编号。
在"还原备份集"下执行下列操作之一:
单击"数据库—完全"还原数据库备份。
单击"数据库—差异"还原差异数据库备份。
单击"事务日志"应用事务日志备份。
单击"文件或文件组"还原文件或文件组备份。指定文件或文件组的名称。
单击"选项"选项卡,然后执行下列操作之一:(可选)
单击"使数据库可以继续运行,但无法还原其它事务日志",如果没有其它要应用的事务日志备份。
单击"使数据库不再运行,但能还原其它事务日志",如果要应用其它事务日志备份。
J. 如何使用SQL Server 2005的事务日志传送功能备份数据库
1、创建一个新的数据库,命名为原来数据库的名字. 2、停止SQL Server 3、把老数据库的MDF 文件替换新数据库的相应的MDF 文件, 并把LDF 文件删除 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 5、停止SQL 然后重新启动SQL Server 服务,然后运培茄行如下命令: DBCC TRACEON (3604) 帮助顾客成功 - 7 - sql 修复 DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') Go 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 7、运行dbcc checkdb(db_name)检查数据库的完整性.
另外,虚机团上产品团购,超级便宜