[SQL Server] 日志管理(待续)
--备份事务日志 (自上一次备份以来,至当前的已完成的事务的日志)
backup log MyDBName to disk='F:\dbbak\GamePoint\MyDBName_log_2010052709.bak';
--截断日志(截断掉当前的已完成的事务的日志), SQL Server 2005, 2008没有这个选项.
backup log MyDBName with no_Log;
--收缩日志(至1M,第一个参数为日志文件名,而不是物理文件名。如果日志还在使用,会延迟收缩)
dbcc shrinkfile (adventureworks_log, 1); --(查询文件名select name from sys.database_files)
go
一般来讲backup log后,会自动截断已完成(又称未活动)的事务日志,并且收缩该文件的大小。但如果你的数据库一直是在运行当中,且只有一个日志文件的时候,备份日志后,它是无法收缩该文件的大小(联机帮助上是说延迟收缩,实际上不知它延迟到什么时候),须backup log MyDBName with no_Log; 才能立即收缩文件大小。
因此,创建数据库时,建议分成2个日志文件,这样只要backup log后,至少会有一个日志文件会被截断并收缩到“已设定的日志文件最小值”。
-- 以下在sql server 2008下,快速收缩日志文件大小的方法。仍然建议数据库中多个日志文件,通过备份日志来自动截断和收缩日志。
use adventureworks;
go
-- truncate the log by changing the database recovery model to simple.
alter database adventureworks
set recovery simple;
go
-- shrink the truncated log file to 1 mb.
dbcc shrinkfile (adventureworks_log, 1); --(查询文件名select name from sys.database_files)
go
-- reset the database recovery model.
alter database adventureworks
set recovery full;
go
恢复事务日志, 待续...
相关文档:
sql之left join、right join、inner join的区别
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
举例如下:
-------------------------------------------- ......
数据库 有两张表
表1: student
表2:chinese
现在要分别列出 每所学校 语文成绩最高的 学生信息
SQL :
SELECT *
from student
LEFT JOIN chinese ON student.no = chinese.no
WHERE chinese.chengji
IN (
SELECT max( chinese.chengji )
from student
LEFT JOIN chinese ON student.no = chinese.no
GROU ......
最近在一个项目中遇到需要在数据层就拼接表中一列数据的问题。
例如,test表中有个字段t,t列中的4行数据为1,2,3,4 ,要拼接成1+2+3+4,琢磨了一阵,本来想用游标,但是效率。。后来找到一段SQL,可以很方便地拼接。
DECLARE @STR VARCHAR(8000) ----定义查询字符串
SELECT @STR=ISNULL(@STR+'+','')+t from (SELECT DIST ......
转自http://blog.csdn.net/ziren235/archive/2007/07/03/1676347.aspx
在SQL Server2000中,一个数据库的日志是以*.ldf 文件存放,请问我想查看某一个数据库的日志,该如何操作.
方法1、
DBCC LOG('DatabaseName',2)
方法2:
select * from ::fn_dblog(default,default)
方法3
用Log Explorer ......
备份
BACKUP DATABASE mydb
TO DISK='c:\olddb.bak'
WITH INIT
--为了测试,把备份好的文件从C盘移动到D:\tempdb 文件夹
--还原
--1.用此语句得到备份文件的逻辑文件名:
RESTORE FILELISTONLY from DISK = N'd:\tempdb\olddb.bak' --备份文件存放路径
--看LogicalName,一般会有两个文件,如:
--olddb &nbs ......