Heim >Datenbank >MySQL-Tutorial >SQLServer2005删除log文件和清空日志的方案

SQLServer2005删除log文件和清空日志的方案

WBOY
WBOYOriginal
2016-06-07 15:15:421401Durchsuche

use master ; exec sp_detach_db @dbname = 'TestDB' ; exec sp_attach_single_file_db @dbname = 'TestDB' , @physname = 'D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TestDB.mdf' 二 、清空日志 该命令在SQL Server 2005和2000支

<span><span>use master</span><span>;</span></span>
<span>exec </span><span>sp_detach_db </span><span>@dbname</span><span>=</span><span>'TestDB'</span><span>;</span>
<span><span>exec </span><span>sp_attach_single_file_db </span><span>@dbname</span><span>=</span><span>'TestDB'</span><span>,</span><span>@physname</span><span>=</span><span>'D:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\TestDB.mdf'</span></span>
 

、清空日志

该命令在SQL Server 2005和2000支持,SQL Server 2008不支持该命令。

<span><span>DUMP TRANSACTION </span><span>TestDB </span><span>WITH </span><span>NO_LOG</span></span>

三、收缩数据库文件

<span><span>DBCC </span><span>SHRINKFILE </span><span>(</span><span>'TestDB_log'</span><span>,</span>1<span>) </span></span>

四、截断事务日志

<span><span>BACKUP </span><span>LOG </span><span>TestDB </span><span>WITH </span><span>NO_LOG</span></span>

该命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。

清除SQLServer2005的LOG文件  

<span>--</span><span>最好备份日志,以后可通过日志恢复数据。。。</span><span>以下为日志处理方法
一般不建议做第4,6两步
第4步不安全,有可能损坏数据库或丢失数据
第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.
</span><span>--</span><span>*/</span><span>--</span><span>下面的所有库名都指你要处理的数据库的库名</span><span><strong>1</strong></span><span>.清空日志
</span><span>DUMP</span><span>TRANSACTION</span><span> 库名 </span><span>WITH</span><span> NO_LOG

</span><span><strong>2</strong></span><span>.截断事务日志:
</span><span>BACKUP</span><span>LOG</span><span> 库名 </span><span>WITH</span><span> NO_LOG

</span><span><strong>3</strong></span><span>.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器</span><span>--</span><span>右键你要压缩的数据库--所有任务--收缩数据库--收缩文件</span><span>
--</span><span>选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了</span><span>
--</span><span>选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了</span><span>
也可以用SQL语句来完成 
</span><span>--</span><span>收缩数据库</span><span>DBCC</span><span> SHRINKDATABASE(库名)

</span><span>--</span><span>收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles</span><span>DBCC</span><span> SHRINKFILE(</span><span><strong>1</strong></span><span>)

</span><span><strong>4</strong></span><span>.为了最大化的缩小日志文件(如果是sql </span><span><strong>7.0</strong></span><span>,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器</span><span>--</span><span>服务器--数据库--右键--分离数据库</span><span>
b.在我的电脑中删除LOG文件

c.附加数据库:
企业管理器</span><span>--</span><span>服务器--数据库--右键--附加数据库</span><span>
此法将生成新的LOG,大小只有500多K

或用代码: 
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离
</span><span>EXEC</span><span> sp_detach_db </span><span>@dbname</span><span>=</span><span>'</span><span>库名</span><span>'</span><span>

b.删除日志文件

c.再附加
</span><span>EXEC</span><span> sp_attach_single_file_db </span><span>@dbname</span><span>=</span><span>'</span><span>库名</span><span>'</span><span>, 
</span><span>@physname</span><span>=</span><span>'</span><span>c:\Program Files\Microsoft SQL Server\MSSQL\Data\库名.mdf</span><span>'</span><span><strong>5</strong></span><span>.为了以后能自动收缩,做如下设置:
企业管理器</span><span>--</span><span>服务器--右键数据库--属性--选项--选择"自动收缩"</span><span>--</span><span>SQL语句设置方式:</span><span>EXEC</span><span> sp_dboption </span><span>'</span><span>库名</span><span>'</span><span>, </span><span>'</span><span>autoshrink</span><span>'</span><span>, </span><span>'</span><span>TRUE</span><span>'</span><span><strong>6</strong></span><span>.如果想以后不让它日志增长得太大
企业管理器</span><span>--</span><span>服务器--右键数据库--属性--事务日志</span><span>
--</span><span>将文件增长限制为xM(x是你允许的最大数据文件大小)</span><span>--</span><span>SQL语句的设置方式:</span><span>alter</span><span>database</span><span> 库名 modify </span><span>file</span><span>(name</span><span>=</span><span>逻辑文件名,maxsize</span><span>=</span><span><strong>20</strong></span><span>)



</span>

SQL Server 数据库使用时间一长就会导致Log文件逐渐变的庞大, 想备份一下数据库, 想发给谁都很困难
运行下面的语句就可以 清到Log文件只剩下1M左右的空间.

DUMP TRANSACTION 数据库名 WITH NO_LOG
DBCC SHRINKDATABASE('数据库名',TRUNCATEONLY)




Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn