[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 server 2005 简单运用函数
1.null 函数
用法与oracle中nvl()类似,处理函数为isnull(),
例如:
select ename,sal+isnull(comm,0)
from emp
go
isnull(comm,0)的用法是: comm为null 则返回0 否则为 comm的值。
2.V ......
数据库 有两张表
表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 ......
怎样从数据库里随机读取
一条记录,
SELECT TOP 1 * from dbo.Customers ORDER BY NEWID()
这样,如果是随机10
条,100条。。。。
SELECT TOP 10 * from dbo.Customers ORDER BY NEWID()
很简单吧。
不过top后面数字越大,运行速度越慢。不推荐数据字太大。
以后代码在SQL2000 ......
前言
最近接连遇到几个朋友问我同一个问题,就是关于.NET平台上ORM框架的选择。我想在这个讲求效率的时代,谁也不想手写SQL或存储过程去访问数据库了。大家都知道,在Java平台上,ORM这一块基本是Hibernate的天下。当然,相对轻量级的iBatis也有不错的表现。
&nb ......
最近在一个项目中遇到需要在数据层就拼接表中一列数据的问题。
例如,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 ......