清理SQL Server 2008数据库日志
清理SQL Server 2008数据库日志
收藏
第一步, 在收缩前先查看日志的大小:
SELECT
*
from
sysfiles
WHERE
name
LIKE
'
%
LOG
%'
GO
第二步, 把数据库的恢复模式设成”简单”:
ALTER
DATABASE
库名
SET
RECOVERY SIMPLE
GO
第三步, 运行checkpoint指令, 把dirty page写进数据库:
CHECKPOINT
GO
第四步, 截断日志:
BACKUP
LOG
库名
WITH
NO_LOG
GO
第五步, 记录一下日志名为下一步做准备:
SELECT
Name
from
sysfiles
WHERE
name
LIKE
'
%
LOG'
GO
第六步, 收缩日志文件, 把不用的空间释放给操作系统:
DBCC
SHRINKFILE (文件名, 所需大小)
GO
第七步, 验证一下日志大小是否达到所需大小了:
SELECT
*
from
sysfiles
WHERE
name
LIKE
'
%
LOG
%
'
GO
后续步骤:
1)查看你的主要数据库, 看看日志增长是否失控;
2)查看上面的代码, 并进行必要修改和测试以适应你的数据库要求;
3)定期收缩数据库 ----(注: 慎用!! 不建议用在production环境里.)
4)继续监控数据库大小和服务器上的可用空间大小.
相关文档:
程序启动Sql Server其实很简单
代码:
System.ServiceProcess.ServiceController myController =
new System.ServiceProcess.ServiceController("MSSQL$ACCP4444"); //服务名称 找了半天才找到,笨死我完了。在服务上右键属性,能看到
if (myController.CanStop)
{ }
else ......
对In和exists的性能进行比较,首先要知道它们两者的区别。
in: 确定给定的值是否与子查询中的值或列表中的值相匹配。
exists: 指定一个子查询,检测行是否存在。
可分析它们的查询语句来得出真实的差别:
in
比如Select * from t1 where x in ( select y from t2 )
执行的过程相当于:
select *
from t1, ( ......
1 TOP
这是一个大家经常问到的问题,例如在SQLSERVER中可以使用如下语句来取得记录集中的前十条记录:
SELECT TOP 10 * from [index] ORDER BY indexid DESC;
但是这条SQL语句在SQLite中是无法执行的,应该改为:
SELECT * from [index] ORDER BY indexid DESC limit 0,10;
其中limit 0,10表示从第0条记录开始,往后 ......
数据字典dict总是属于Oracle用户sys的。
1、用户:
select username from dba_users;
改口令
alter user spgroup identified by spgtest;
2、表空间:
select * from dba_data_files;
select * from dba_tablespaces;//表空间
select tablespace_name,sum(bytes), sum(b ......