在SQL Server数据库中,数据文件与事务日志文件的修改日期(Date Modified)是会变化的,但是有时候你会发现你的数据文件或日志文件的修改日期(Date Modified)几个月甚至是半年以上都没有变化了,如下截图所示:

为什么呢?不会是什么bug吧? 相信很多人都会有这样的反应。下面我们通过实验来看看数据库的数据文件与事务日志文件在什么情况或条件下, 修改日期(Date Modified)才会变化.首先创建一个TEST数据库,查看其数据文件或事务日志文件的修改日期如下:

USE [master];

GO

 

CREATE DATABASE [TEST] ON PRIMARY 

( 

    NAME = N'TEST', 

    FILENAME = N'E:\SQL_DATA\test.mdf' , 

    SIZE = 32MB , 

    MAXSIZE = UNLIMITED, FILEGROWTH = 1MB 

) LOG ON 

(   

    NAME = N'TEST_LOG', 

    FILENAME = N'E:\SQL_DATA\test_log.ldf' , 

    SIZE = 4MB , 

    MAXSIZE = 2048GB , 

    FILEGROWTH = 10%

);

GO

我们先查看一下数据库数据文件大小、空间使用情况,依此以为参照,判别数据库数据文件或事务日志的增长情况

USE TEST;

GO

 

 

SELECT   DB_NAME(database_id)                        AS DataBaseName 

        ,Name                                        AS LogicalName 

        ,type_desc                                   AS FileTypeDesc 

        ,Physical_Name                               AS PhysicalName 

        ,CAST(size * 8.0 / 1024  AS DECIMAL(8, 4))   AS [Size(MB)]

        ,FILEPROPERTY(name, 'SpaceUsed') * 8.0/1024  AS [Used_Size(MB)]

        ,CURRENT_TIMESTAMP                           AS CURRENT_DATETIME

FROM     sys.master_files

WHERE database_id = DB_ID('TEST');

我们通过一个大批量插入操作,使数据库的数据文件实现自增长,如下所示,当数据库的数据文件或事务日志文件增长时,其修改日期就会变化。

SET NOCOUNT ON;

GO

 

CREATE TABLE TEST (OBJECT_ID  INT, NAME VARCHAR(600));

 

CREATE CLUSTERED INDEX PK_TEST ON TEST(OBJECT_ID) 

 

DECLARE @Index INT =0;

 

WHILE @Index < 200000

BEGIN

    INSERT INTO TEST

    SELECT @Index, REPLICATE('it is only test', 40);

    

    SET @Index = @Index +1;

END

GO

然后你用执行一些其他DML操作,前提是不要使数据文件增长,那么你会发现数据库数据文件与事务日志文件的修改日期是不会变化的,也就是说即使数据库的数据文件和日志文件有读写操作,它的修改日期是不会变化的,这个跟普通文件是有区别的。

DECLARE @Index INT =0;

 

WHILE @Index < 20

 

BEGIN

 

INSERT INTO TEST

 

SELECT @Index, REPLICATE('it is only test', 40);

 

SET @Index = @Index +1;

 

END

 

GO

所以即使你看到你的数据库里面数据文件或事务日志文件的修改日期是几天前、甚至是几个月前的日期,也不要大惊小怪,这个并不代表这这个数据库并没有任务事务操作或活动事务,而是仅仅因为数据库的数据文件和事务日志文件没有扩展而已。因为可能数据文件或事务日志文件有大量空间可用,或是最近数据增长很少的缘故。

那么还有那些操作会修改数据库的数据文件与事务日志文件的修改时间(Date Modified)呢? 总结归纳起来有下面一些操作:

1:数据文件或事务日志文件的自增长或调整大小(使用SQL语句调整数据文件大小也会改变修改时间)

2:数据文件或事务日志文件的收缩会修改数据文件的修改日期。

3:分离附加数据库或脱机联机操作会修改数据文件的修改日期。

4:重启数据库服务也会修改数据文件的修改日期(有些数据库的数据库文件的修改日期会变化,有些也不会变化)

当然,应该还有一些其他操作也有可能导致数据库数据文件或事务日志文件的修改日期变化,没法一一实验测试验证,在此略过。

PS:本文是同事想以数据文件的修改日期来判断数据库最近的活动时间,结果发现这么一个现象,所以做了一下这方面的研究和总结。

为什么你SQL Server的数据库文件的Date modified没有变化呢?的更多相关文章

  1. SQL Server中数据库文件的存放方式,文件和文件组

    原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html   SQL Server中数据库文件的存放方式,文件和文件组 ...

  2. sql server还原数据库文件(.bak)常见问题解决办法笔记

    还原的时候出现错误:备份集中的数据库备份与现有的数据库不同 SQL Server 2005数据库还原出错错误具体信息为:备份集中的数据库备份与现有的A数据库不同 具体操作如下:第一次:新建了数据库A, ...

  3. SQL Server架构 -- 数据库文件和文件组

    在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,也是在特定文件夹下创建不同的文件,然后经过文件存储系统去抓取数据信息.理解文件和文件组的概念可以帮 ...

  4. SQL Server 2008R2数据库文件导入到SQL Server 2008数据库中

    最近,电脑重装系统之后,安装了SQL Server 2008.附加数据库文件的时候,发现无法附加,提示版本不对.想起来,原来的数据库版本是SQL Server 2008R2.低版本的数据库管理工具无法 ...

  5. 修改SQL Server 2005 数据库文件名字

    对于SQLServer 2005的数据库文件名字的修改.不多说,见图: 对于数据库名的更改直接选中要修改的数据库,F2,你懂的,不懂的可以去屎了.....0.0 下面要修改数据库的文件名 原理就是利用 ...

  6. SQL SERVER获取数据库文件信息

        MS SQL SERVER 获取当前数据库文件等信息,适用于多个版本: SELECT dbf.file_id AS FileID , dbf.name AS [FileName] , s.fi ...

  7. SQL Server中数据库文件的存放方式,文件和文件组 (转载)

    简介 在SQL SERVER中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL SERVER通过管理逻辑上的文件组的方式来管理文件.理解文件和文 ...

  8. SQL SERVER备份数据库文件(使用SSMS)

    微软的SQL SERVER是市面占有率比较大的数据库,在平时的使用与维护中,备份数据是一件十分重要的! 备份操作,用微软自带的ssms(SQL Server Management Studio)工具即 ...

  9. SQL Server附加数据库文件出错

    场景: 新装一台数据库服务器,装好后,附加数据库时出错.附加前的数据库架构没有在新服务器上安装.新服务器上只有默认dbo架构. 解决: 以windows身份验证登录,附加正常. 错误码可能为5120. ...

随机推荐

  1. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  2. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

  3. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

  4. Android -- 真正的 高仿微信 打开网页的进度条效果

    (本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...

  5. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  6. npm 使用小结

    本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器.这里的 node 包就是指各种 javascript 库. npm 是随同 Nod ...

  7. 关于SMARTFORMS文本编辑器出错

    最近在做ISH的一个打印功能,SMARTFORM的需求本身很简单,但做起来则一波三折. 使用环境是这样的:Windows 7 64bit + SAP GUI 740 Patch 5 + MS Offi ...

  8. 【SAP业务模式】之ICS(一):业务详述

    PS:本专题系列讲述如何在SAP系统中实现ICS的业务模式,本系列博文系原创,如要转载引用,请保持原文一致并注明出处! SAP系统自身功能非常强大,支持多种业务模式,通过前台后台的配置就可以实现多种效 ...

  9. Mysql - 触发器/视图

    触发器在之前的项目中, 应用的着实不多, 没有办法的时候, 才会去用这个. 因为这个东西在后期并不怎么好维护, 也容易造成紊乱. 我最近的项目中, 由于数据库设计(别人设计的)原因, 导致一些最简单功 ...

  10. 使用四元数解决万向节锁(Gimbal Lock)问题

    问题 使用四元数可以解决万向节锁的问题,但是我在实际使用中出现问题:我设计了一个程序,显示一个三维物体,用户可以输入绕zyx三个轴进行旋转的指令,物体进行相应的转动. 由于用户输入的是绕三个轴旋转的角 ...