关于sql日志文件
一段时间来,每天的工作都比较杂,vb,asp,c#,sql,每项工作都要搞,实在是累!工作之余,想想公司和工作的情况,看来是有必要换个环境了。不过也要先把目前的工作处理完成啊。
最近又遇到一个问题:一家客户使用中的数据库,日志文件异常增大,平均每天增加大约一个G,而数据文件变化不大。这两天开始查这个问题,但是好几天时间过去了,一直没有头绪。已经做了重建索引,重装sql,重装系统,更换服务器等操作,问题依旧。在google搜索了下,只有查找sql数据库日志文件大小的命令,但是不知如何查找表日志大小。
查询数据库的日志文件大小:dbcc sqlperf(logspace)
Database Name Log Size (MB) Log Space Used (%) Status
-------------- ------------------------ ------------------------ -----------
master 2.2421875 32.600174 0
tempdb 0.4921875 39.285713 0
model 0.4921875 41.07143 0
msdb 2.2421875 30.901567 0
pubs 0.7421875 49.934212 0
Northwind 0.9921875 34.940945 0
dbcc sqlperf(logspace) 可以获取实例中每个数据库日志文件大小,及使用情况。如果要保存SQL日志文件大小,则需要先创建一个数据表,然后动态执行dbcc sqlperf(logspace)命令:
create table dbo.LogSize
(
dbname nvarchar(50) not null
,logsize decimal(8,2) not null
,logused decimal(5,2) not null
,status int null
)
insert into dbo.LogSize
execute('dbcc sqlperf(logspace) with no_infomsgs')
要查日志文件异常增大的原因,就要先确定是哪张表操作异常;通过Log Explorer工具,我们可以看到日志文件的状况.
Log Explorer主要用于对MSSQLServer的事务分析和数据恢复。可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的表格)。一旦由于系统故障或者人为因素导致数据丢失,它能够提供在线快速的数据恢复,最大程度上保证恢复期间的其他事物不间断执行。可以支持SQLServer7.0和SQLServer2000,提取标准数据库的日志文件或者备份文件中的信息。
Log Explorer
相关文档:
create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列
......
Cross Apply使表可以和表值函数结果进行join,在下面的示例中建了两个表和一个表值函数,T_b的列a_ids中会存放a表的id用,分割的字符串连接;我们通过cross apply使T_a,T_b表通过splitIDs inner join 连接。请看示例:GO
if object_id('T_a','U') is not null
drop table T_a
GO
CREATE TABLE T_a( ......
SQL Server 索引结构及其使用(一)
作者:freedk
一、深入浅出理解索引结构
实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索 ......
4.6 通过日志查看服务器的运行情况
SQL Server 2005可以将某些系统事件和用户自定义的事件记录到SQL Server错误日志和Windows应用程序日志中。这两种日志都会自动标上时间。
4.6.1 在【事件查看器】中查看服务器的运行情况
SQL Server 2005服务器的启动、关闭和暂停动作,都会产生一个事件记录,这个记录将会记在Windows ......
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm
例如:
select getdate()
2004-09-12 11:06:08.177
这对于在要不同数据库间转移数据或者习惯oracle日期格式YYYY-MM-DD HH24:MI:SS的人多少有些不方便.
我整理了一下SQL Server里面可能经常会用到的日期格式转换方法:
举例如下:
select CONV ......