很奇怪,以下这段代码,在 sqlserver2000, sqlserver2005 下是可以清数据库日志的。
但在 sqlserver2008 下就报错,清不了。(以上经过多次测试都是这样)不知为何?  sqlserver2008下清数据库日志又应用什么可行代码呢? 谢谢!附代码:Backup log databasename With no_log 
Backup log databasename  With truncate_only 
dbcc ShrinkDataBase('databasename')数据库

解决方案 »

  1.   

    --适用于SQL Server 2008USE[master]
    GO
    ALTER DATABASE [test] SET RECOVERY SIMPLE WITH NO_WAIT
    GO
    ALTER DATABASE [test] SET RECOVERY SIMPLE
    GOUSE[test]
    GO
    DBCC SHRINKFILE (N'test_log' , 0, TRUNCATEONLY)
    GOUSE[master]
    GO
    ALTER DATABASE [test] SET RECOVERY FULL WITH NO_WAIT
    GO
    ALTER DATABASE [test] SET RECOVERY FULL
    GO 
      

  2.   

    楼上正解,我补充一点.先把数据库改为单机模式,
    DBCC SHRINKFILE (N'test_log' , 0, TRUNCATEONLY) -->中间的参数0表示把日志清空到多少以内,0表示全部清空
    再把数据库还原为正常模式
      

  3.   


    --建议用下面三句
    dump transaction databasename with no_log 
    backup log databasename with no_log
    dbcc shrinkdatabase(databasename)