国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

詳細(xì)講解刪除SQL Server日志的具體方法

瀏覽:141日期:2023-11-06 09:45:28

一: 刪除LOG

1:分離數(shù)據(jù)庫(kù) 企業(yè)管理器->服務(wù)器->數(shù)據(jù)庫(kù)->右鍵->分離數(shù)據(jù)庫(kù)

2:刪除LOG文件

3:附加數(shù)據(jù)庫(kù) 企業(yè)管理器->服務(wù)器->數(shù)據(jù)庫(kù)->右鍵->附加數(shù)據(jù)庫(kù)

此法生成新的LOG,大小只有520多K

再將此數(shù)據(jù)庫(kù)設(shè)置自動(dòng)收縮

或用代碼:

下面的示例分離 77169database,然后將 77169database 中的一個(gè)文件附加到當(dāng)前服務(wù)器。

EXEC sp_detach_db @dbname = '77169database'

EXEC sp_attach_single_file_db @dbname = '77169database',

@physname = 'c:Program FilesMicrosoft SQL ServerMSSQLData77169database.mdf'

二:清空日志

DUMP TRANSACTION 庫(kù)名 WITH NO_LOG

再:

企業(yè)管理器--右鍵你要壓縮的數(shù)據(jù)庫(kù)--所有任務(wù)--收縮數(shù)據(jù)庫(kù)--收縮文件--選擇日志文件--在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了

三: 如果想以后不讓它增長(zhǎng)

企業(yè)管理器->服務(wù)器->數(shù)據(jù)庫(kù)->屬性->事務(wù)日志->將文件增長(zhǎng)限制為2M

自動(dòng)收縮日志,也可以用下面這條語(yǔ)句:

ALTER DATABASE 數(shù)據(jù)庫(kù)名

SET AUTO_SHRINK ON

故障還原模型改為簡(jiǎn)單,用語(yǔ)句是:

USE MASTER

GO

ALTER DATABASE 數(shù)據(jù)庫(kù)名 SET RECOVERY SIMPLE

GO

------------------------------------------

截?cái)嗍聞?wù)日志:

BACKUP LOG { database_name | @database_name_var }

{

[ WITH

{ NO_LOG | TRUNCATE_ONLY } ]

}

--壓縮日志及數(shù)據(jù)庫(kù)文件大小

/*--特別注意

請(qǐng)按步驟進(jìn)行,未進(jìn)行前面的步驟,請(qǐng)不要做后面的步驟

否則可能損壞你的數(shù)據(jù)庫(kù).

--*/

1.清空日志

DUMP TRANSACTION 庫(kù)名 WITH NO_LOG

2.截?cái)嗍聞?wù)日志:

BACKUP LOG 數(shù)據(jù)庫(kù)名 WITH NO_LOG

3.收縮數(shù)據(jù)庫(kù)文件(如果不壓縮,數(shù)據(jù)庫(kù)的文件不會(huì)減小

企業(yè)管理器--右鍵你要壓縮的數(shù)據(jù)庫(kù)--所有任務(wù)--收縮數(shù)據(jù)庫(kù)--收縮文件

--選擇日志文件--在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了

--選擇數(shù)據(jù)文件--在收縮方式里選擇收縮至XXM,這里會(huì)給出一個(gè)允許收縮到的最小M數(shù),直接輸入這個(gè)數(shù),確定就可以了

也可以用SQL語(yǔ)句來(lái)完成

--收縮數(shù)據(jù)庫(kù)

DBCC SHRINKDATABASE(客戶資料)

--收縮指定數(shù)據(jù)文件,1是文件號(hào),可以通過(guò)這個(gè)語(yǔ)句查詢到:select * from sysfiles

DBCC SHRINKFILE(1)

4.為了最大化的縮小日志文件(如果是sql 7.0,這步只能在查詢分析器中進(jìn)行)

a.分離數(shù)據(jù)庫(kù):

企業(yè)管理器--服務(wù)器--數(shù)據(jù)庫(kù)--右鍵--分離數(shù)據(jù)庫(kù)

b.在我的電腦中刪除LOG文件

c.附加數(shù)據(jù)庫(kù):

企業(yè)管理器--服務(wù)器--數(shù)據(jù)庫(kù)--右鍵--附加數(shù)據(jù)庫(kù)

此法將生成新的LOG,大小只有500多K

或用代碼:

下面的示例分離 77169database,然后將 77169database 中的一個(gè)文件附加到當(dāng)前服務(wù)器。

a.分離

EXEC sp_detach_db @dbname = '77169database'

b.刪除日志文件

c.再附加

EXEC sp_attach_single_file_db @dbname = '77169database',

@physname = 'c:Program FilesMicrosoft SQL ServerMSSQLData77169database.mdf'

5.為了以后能自動(dòng)收縮,做如下設(shè)置:

企業(yè)管理器--服務(wù)器--右鍵數(shù)據(jù)庫(kù)--屬性--選項(xiàng)--選擇'自動(dòng)收縮'

--SQL語(yǔ)句設(shè)置方式:

EXEC sp_dboption '數(shù)據(jù)庫(kù)名', 'autoshrink', 'TRUE'

6.如果想以后不讓它日志增長(zhǎng)得太大

企業(yè)管理器--服務(wù)器--右鍵數(shù)據(jù)庫(kù)--屬性--事務(wù)日志

--將文件增長(zhǎng)限制為xM(x是你允許的最大數(shù)據(jù)文件大小)

--SQL語(yǔ)句的設(shè)置方式:

alter database 數(shù)據(jù)庫(kù)名 modify file(name=邏輯文件名,maxsize=20)

--------------------------------------------------------------

/*--壓縮數(shù)據(jù)庫(kù)的通用存儲(chǔ)過(guò)程

壓縮日志及數(shù)據(jù)庫(kù)文件大小

因?yàn)橐獙?duì)數(shù)據(jù)庫(kù)進(jìn)行分離處理

所以存儲(chǔ)過(guò)程不能創(chuàng)建在被壓縮的數(shù)據(jù)庫(kù)中

/*--調(diào)用示例

exec p_compdb 'test'

--*/

use master --注意,此存儲(chǔ)過(guò)程要建在master數(shù)據(jù)庫(kù)中

go

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_compdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[p_compdb]

GO

create proc p_compdb

@dbname sysname, --要壓縮的數(shù)據(jù)庫(kù)名

@bkdatabase bit=1, --因?yàn)榉蛛x日志的步驟中,可能會(huì)損壞數(shù)據(jù)庫(kù),所以你可以選擇是否自動(dòng)數(shù)據(jù)庫(kù)

@bkfname nvarchar(260)='' --備份的文件名,如果不指定,自動(dòng)備份到默認(rèn)備份目錄,備份文件名為:數(shù)據(jù)庫(kù)名+日期時(shí)間

as

--1.清空日志

exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')

--2.截?cái)嗍聞?wù)日志:

exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')

--3.收縮數(shù)據(jù)庫(kù)文件(如果不壓縮,數(shù)據(jù)庫(kù)的文件不會(huì)減小

exec('DBCC SHRINKDATABASE(['+@dbname+'])')

--4.設(shè)置自動(dòng)收縮

exec('EXEC sp_dboption '''+@dbname+''',''autoshrink'',''TRUE''')

--后面的步驟有一定危險(xiǎn),你可以可以選擇是否應(yīng)該這些步驟

--5.分離數(shù)據(jù)庫(kù)

if @bkdatabase=1

begin

if isnull(@bkfname,'')=''

set @bkfname=@dbname+'_'+convert(varchar,getdate(),112)

+replace(convert(varchar,getdate(),108),':','')

select 提示信息='備份數(shù)據(jù)庫(kù)到SQL 默認(rèn)備份目錄,備份文件名:'+@bkfname

exec('backup database ['+@dbname+'] to disk='''+@bkfname+'''')

end

--進(jìn)行分離處理

create table #t(fname nvarchar(260),type int)

exec('insert into #t select filename,type=status&0x40 from ['+@dbname+']..sysfiles')

exec('sp_detach_db '''+@dbname+'''')

--刪除日志文件

declare @fname nvarchar(260),@s varchar(8000)

declare tb cursor local for select fname from #t where type=64

open tb

fetch next from tb into @fname

while @@fetch_status=0

begin

set @s='del ''+rtrim(@fname)+'''

exec master..xp_cmdshell @s,no_output

fetch next from tb into @fname

end

close tb

deallocate tb

--附加數(shù)據(jù)庫(kù)

set @s=''

declare tb cursor local for select fname from #t where type=0

open tb

fetch next from tb into @fname

while @@fetch_status=0

begin

set @s=@s+','''+rtrim(@fname)+''''

fetch next from tb into @fname

end

close tb

deallocate tb

exec('sp_attach_single_file_db '''+@dbname+''''+@s)

go

主站蜘蛛池模板: 乐业县| 大洼县| 平远县| 乌审旗| 山阴县| 英德市| 原阳县| 福州市| 抚远县| 门源| 九龙坡区| 金川县| 晋州市| 昭觉县| 资中县| 兴宁市| 陆良县| 静宁县| 芜湖市| 九江市| 怀化市| 安乡县| 宜春市| 甘孜县| 五华县| 六盘水市| 施秉县| 当雄县| 颍上县| 绥芬河市| 潞城市| 垫江县| 宣城市| 建水县| 广灵县| 昌图县| 德清县| 济宁市| 安仁县| 钟山县| 涟水县|