执行:delete from [orders] where actiondate='2007-06-30'但这条记录并没有真正从数据库中删除,只是做了个删除标记,请问再执行什么命令,可以测试删除!谢谢!

解决方案 »

  1.   

    没有删除? 已经删除了,不过日志中做了记录而已.
    你说没有删除,不会是用的fox之类的数据库吧
      

  2.   

    我的网站是SQL数据库,我使用查询分析器进行删除命令:delete   from   [orders]   where   actiondate= '2007-06-30 ' 在查询分析器里,已经找不到已经删除的记录我删除了20000条记录,但数据库的大小还是一样,没有变化!按道理删除,数据库的容量应该减少?是不是还有什么命令需要update一下我的网站数据库只有200M,快满了!
      

  3.   

    压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 
    否则可能损坏你的数据库. 
    一般不建议做第4,6两步 
    第4步不安全,有可能损坏数据库或丢失数据 
    第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复. 
    --*/ --下面的所有库名都指你要处理的数据库的库名 1.清空日志 
    DUMP     TRANSACTION     库名     WITH     NO_LOG         2.截断事务日志: 
    BACKUP   LOG   库名   WITH   NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 
    --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 
    --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成 
    --收缩数据库 
    DBCC   SHRINKDATABASE(库名) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select   *   from   sysfiles 
    DBCC   SHRINKFILE(1) 4.为了最大化的缩小日志文件(如果是sql   7.0,这步只能在查询分析器中进行) 
    a.分离数据库: 
    企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库: 
    企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码:   
    下面的示例分离   pubs,然后将   pubs   中的一个文件附加到当前服务器。 a.分离 
    EXEC   sp_detach_db   @dbname   =   '库名 ' b.删除日志文件 c.再附加 
    EXEC   sp_attach_single_file_db   @dbname   =   '库名 ',   
          @physname   =   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\库名.mdf ' 5.为了以后能自动收缩,做如下设置: 
    企业管理器--服务器--右键数据库--属性--选项--选择 "自动收缩 " --SQL语句设置方式: 
    EXEC   sp_dboption   '库名 ',   'autoshrink ',   'TRUE ' 6.如果想以后不让它日志增长得太大 
    企业管理器--服务器--右键数据库--属性--事务日志 
    --将文件增长限制为xM(x是你允许的最大数据文件大小) --SQL语句的设置方式: 
    alter   database   库名   modify   file(name=逻辑文件名,maxsize=20)
      

  4.   

    谢谢你的答复我是菜鸟,
    我只需要压缩一下数据库即可,以及删除一下日志文件DUMP       TRANSACTION           库名           WITH           NO_LOG       
    DBCC       SHRINKDATABASE(库名)   使用以上2条指令是否就可以了,在查询分析器里可以执行吗?安全吗?我怕损坏数据库!谢谢!
      

  5.   

    能不能指点一下具体的操作步骤?我刚才在查询分析器中:DBCC               SHRINKDATABASE(ywy0001_db)  服务器: 消息 7983,级别 14,状态 12,行 1
     
    DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
    出错!
      

  6.   

    压缩清空日志。
    压缩日志及数据库文件大小   /*--特别注意   请按步骤进行,未进行前面的步骤,请不要做后面的步骤   
    否则可能损坏你的数据库.   
    一般不建议做第4,6两步   
    第4步不安全,有可能损坏数据库或丢失数据   
    第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.   
    --*/   --下面的所有库名都指你要处理的数据库的库名   1.清空日志   
    DUMP           TRANSACTION           库名           WITH           NO_LOG                   2.截断事务日志:   
    BACKUP       LOG       库名       WITH       NO_LOG   3.收缩数据库文件(如果不压缩,数据库的文件不会减小   
    企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件   
    --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了   
    --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了   也可以用SQL语句来完成   
    --收缩数据库   
    DBCC       SHRINKDATABASE(库名)   --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select       *       from       sysfiles   
    DBCC       SHRINKFILE(1)   4.为了最大化的缩小日志文件(如果是sql       7.0,这步只能在查询分析器中进行)   
    a.分离数据库:   
    企业管理器--服务器--数据库--右键--分离数据库   b.在我的电脑中删除LOG文件   c.附加数据库:   
    企业管理器--服务器--数据库--右键--附加数据库   此法将生成新的LOG,大小只有500多K   或用代码:       
    下面的示例分离       pubs,然后将       pubs       中的一个文件附加到当前服务器。   a.分离   
    EXEC       sp_detach_db       @dbname       =       '库名   '   b.删除日志文件   c.再附加   
    EXEC       sp_attach_single_file_db       @dbname       =       '库名   ',       
                @physname       =       'c:\Program       Files\Microsoft       SQL       Server\MSSQL\Data\库名.mdf   '   5.为了以后能自动收缩,做如下设置:   
    企业管理器--服务器--右键数据库--属性--选项--选择   "自动收缩   "   --SQL语句设置方式:   
    EXEC       sp_dboption       '库名   ',       'autoshrink   ',       'TRUE   '   6.如果想以后不让它日志增长得太大   
    企业管理器--服务器--右键数据库--属性--事务日志   
    --将文件增长限制为xM(x是你允许的最大数据文件大小)   --SQL语句的设置方式:   
    alter       database       库名       modify       file(name=逻辑文件名,maxsize=20)
    楼上的这办法就能搞定
      

  7.   

    已经删除 ,当是foxpro在玩呀
      

  8.   

    楼主一定用过foxpro吧,那里面有逻辑删除的概念,但是sqlserver2000中没有,删除都是真正删除。
    当然可以通过日志恢复。但是那不是常规操作。
    建议楼主加一个删除标记。
    update 表名 set 标记=1 where  -----
    查询时,
    select * from 表名 where 标记<>1 and -----这样就能达到楼主的要求了。
      

  9.   

    楼主的问题涉及到一些基本的数据库维护方面的东西,
    首先掌握基本概念才是最重要的,
    建议楼主花点时间看看MS SQL入门的书,对以后会有很大好处的。最简单的方法:(假设你的数据库名字是MyDB,并且假设你是想彻底删除那些记录,也不需要恢复)
    顺序执行下面的语句
    1) backup log MyDB with truncate_only
    2) exec sp_helpdb MyDB
        这个命令会显示你的数据库(MyDB)的数据文件(data file)和日志文件(log file)的名字
        假设你的日志文件名字是 MyDB_Log
    3) dbcc shrinkfile(MyDB_Log, 10)
        这个命令把你的日志文件缩减的10M大小