我看数据库的文章,说DBMS有日志功能,能把所做的一切改动记录下来。我连到了一个SQL Sever2000的服务器,删了其中的一个表中的一个记录,会有记录吗?如何能做到没有痕迹?像搞破坏一样,呵呵。不过程序员也有好奇心的嘛,没有好奇心水平提不高哟。

解决方案 »

  1.   

    清空日志
    DUMP  TRANSACTION  库名  WITH  NO_LOG       或截断日志:
    backup log 数据库 with no_log--清除日志
    方法1、
    --在查询分析器,选中所要清理日志的数据库,执行如下SQL
    backup log 数据库名 with no_log
    DBCC SHRINKFILE ( 日志文件名或日志文件ID,要缩小的目标大小)
            
    在当前数据库下
    select fileid,groupid,name from sysfiles where groupid=0
    ----------------------------------------
    得到以下结果
    fileid     groupid          name  
    2          0                test_log 以上结果,fileid为日志文件ID,name为test_log你可以
    backup log test with no_log
    dbcc shrinkfile (2,2)
    or
    backup log test with no_log
    dbcc shrinkfile ('test_log',2)
    如果以后,不想要它变大,在数据库上点右键->属性->选项->故障恢复  模型 选择 简单模型就可以了!
    或用SQL语句
    alter database 数据库名 set recovery simple
      

  2.   

    1:这个可以查
    Log Explorerhttp://www.ttdown.com/SoftDown.asp?ID=14562
    http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
    解压缩密码 www.heibai.nethttp://www.ttdown.com/softview_8647.htm
    注册机产生的是注册码,是两个用解压缩密码解开后,压缩包里也有一个注册机的打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
    选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
    想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
    T-sql代码就可以了例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....
      

  3.   

    1: 删除LOG
    1:分离数据库   企业管理器->服务器->数据库->右键->分离数据库
    2:删除LOG文件
    3:附加数据库  企业管理器->服务器->数据库->右键->附加数据库
    此法生成新的LOG,大小只有500多K
       再将此数据库设置自动收缩
     或用代码: 
    下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。EXEC sp_detach_db @dbname = 'pubs'
    EXEC sp_attach_single_file_db @dbname = 'pubs', 
       @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
    2:清空日志
    DUMP  TRANSACTION  库名  WITH  NO_LOG