第一篇:SQL 數(shù)據(jù)庫(kù)文件超級(jí)大而且增長(zhǎng)速度過(guò)快的解決辦法
SQL 數(shù)據(jù)庫(kù)文件超級(jí)大,而且增長(zhǎng)速度過(guò)快!
(2008-09-05 13:50:29)目前一客戶的數(shù)據(jù)庫(kù)文件(.MDF)占用空間超過(guò)有48G,切增長(zhǎng)速度很快。已經(jīng)對(duì)日志文件進(jìn)行了壓縮。
在查詢分析器中用 exec sp_spaceused
語(yǔ)句進(jìn)行查詢,輸出結(jié)果如下:(頭疼的問(wèn)題)
database_name database_size
unallocated_space
NSMIS 48770.00M
1370.97 MB
reserved data
index_size unused 48504160 KB 7017272 KB
270776 KB
41216112 KB------------------------
1、用BACKUP LOG database WITH NO_LOG清除日志
把數(shù)據(jù)庫(kù)屬性中的故障還原模型改為“簡(jiǎn)單”可以大大減慢日志增長(zhǎng)的速度。
如果把還原模型調(diào)到簡(jiǎn)單,這樣就不支持時(shí)間點(diǎn)還原了,但是日志文件會(huì)很小,如果數(shù)據(jù)比較重要推薦還是把數(shù)據(jù)庫(kù)的還原模型調(diào)為完全
用BACKUP LOG database WITH NO_LOG命名后,會(huì)截?cái)嗖换顒?dòng)日志,不減小物理日志文件的大小,但邏輯日志會(huì)減小,收縮數(shù)據(jù)庫(kù)后會(huì)把不活動(dòng)虛擬日志刪除來(lái)釋放空間,不會(huì)損壞數(shù)據(jù)。
如果日志被截?cái)嗖⑹湛s數(shù)據(jù)庫(kù)后,就不能直接用最近的一個(gè)全庫(kù)備份做時(shí)間點(diǎn)還原,建議立即備份數(shù)據(jù)庫(kù),以防萬(wàn)一。
2、sql server運(yùn)行中,是否能刪除主數(shù)據(jù)庫(kù)事務(wù)日志文件
步驟如下:(1)、分離數(shù)據(jù)庫(kù)企業(yè)管理器--數(shù)據(jù)庫(kù)--右擊你要?jiǎng)h除日志的數(shù)據(jù)庫(kù)--所有 任務(wù)--分離數(shù)據(jù)庫(kù)(2)、然后刪除日志文件(3)、然后再附加數(shù)據(jù)庫(kù)
企業(yè)管理器--數(shù)據(jù)庫(kù)--右擊數(shù)據(jù)庫(kù)--所有任務(wù)--附加數(shù)據(jù)庫(kù)這時(shí)候只附加。mdf就可以了。
3、壓縮SQL數(shù)據(jù)庫(kù)及日志的詳細(xì)方法
SQL Server 2000基礎(chǔ)教程——壓縮數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)在使用一段時(shí)間后,時(shí)常會(huì)出現(xiàn)因數(shù)據(jù)刪除而造成數(shù)據(jù)庫(kù)中空閑空間太多的情況,這時(shí)就需要減少分配給數(shù)據(jù)庫(kù)文件和事務(wù)日志文件的磁盤(pán)空間,以免浪費(fèi)磁盤(pán)空間。當(dāng)數(shù)據(jù)庫(kù)中沒(méi)有數(shù)據(jù)時(shí),可以修改數(shù)據(jù)庫(kù)文件屬性直接改變其占用空間,但當(dāng)數(shù)據(jù)庫(kù)中有數(shù)據(jù)時(shí),這樣做會(huì)破壞數(shù)據(jù)庫(kù)中的數(shù)據(jù),因此需要使用壓縮的方式來(lái)縮減數(shù)據(jù)庫(kù)空間??梢栽跀?shù)據(jù)庫(kù)屬性選項(xiàng)中選擇“Auto shrink”選項(xiàng),讓系統(tǒng)自動(dòng)壓縮數(shù)據(jù)庫(kù),也可以用人工的方法來(lái)壓縮。人工壓縮數(shù)據(jù)庫(kù)有以下兩種方式:
1、用Enterprise Manager 壓縮數(shù)據(jù)庫(kù)
在Enterprise Manager 中在所要壓縮的數(shù)據(jù)庫(kù)上單擊右鍵,從快捷菜單中的“所有任務(wù)(All Tasks)”中選擇“Shrink Database(壓縮數(shù)據(jù)庫(kù))”選項(xiàng),就會(huì)出現(xiàn)如圖6-10 所示的對(duì)話框??梢栽趫D6-10 所示的對(duì)話框中選擇數(shù)據(jù)庫(kù)的壓縮方式,也可以選擇使用壓縮計(jì)劃或壓縮單個(gè)文件單擊圖6-10 中的“Files”按鈕,會(huì)出現(xiàn)如圖6-11 所示的壓縮數(shù)據(jù)庫(kù)文件對(duì)話框,可以針對(duì)每個(gè)數(shù)據(jù)庫(kù)文件進(jìn)行不同的壓縮設(shè)置。
單擊圖6-10 中的“Change” 按鈕,會(huì)出現(xiàn)如圖6-12 所示的壓縮計(jì)劃編輯對(duì)話框,可以指定壓縮計(jì)劃的執(zhí)行方式。單擊圖6-12 中的“Change” 按鈕,會(huì)出現(xiàn)如圖6-13 所示的循環(huán)工作計(jì)劃編輯對(duì)話框,可以編輯計(jì)劃執(zhí)行的周期或時(shí)間點(diǎn)。設(shè)置完成后單擊“OK” 按鈕就開(kāi)始?jí)嚎s數(shù)據(jù)庫(kù),在壓縮結(jié)束后會(huì)顯示一個(gè)壓縮情況信息框。
2、用Transact-SQL 命令壓縮數(shù)據(jù)庫(kù) 可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令來(lái)壓縮數(shù)據(jù)庫(kù)。其中DBCC SHRINKDATABASE 命令對(duì)數(shù)據(jù)庫(kù)進(jìn)行壓縮,DBCC SHRINKFILE 命令對(duì)數(shù)據(jù)庫(kù)中指定的文件進(jìn)行壓縮。(1)DBCC SHRINKDATABASE DBCC SHRINKDATABASE 命令語(yǔ)法如下:
DBCC SHRINKDATABASE(database_name [, target_percent] [, {NOTRUNCATE | TRUNCATEONLY}])各參數(shù)說(shuō)明如下:
〃target_percent 指定將數(shù)據(jù)庫(kù)壓縮后,未使用的空間占數(shù)據(jù)庫(kù)大小的百分之幾。如果指定的百分比過(guò)大,超過(guò)了壓縮前未使用空間所占的比例,則數(shù)據(jù)庫(kù)不會(huì)被壓縮。并且壓縮后的數(shù)據(jù)庫(kù)不能比數(shù)據(jù)庫(kù)初始設(shè)定的容量小?!∟OTRUECATE 將數(shù)據(jù)庫(kù)縮減后剩余的空間保留在數(shù)據(jù)庫(kù),中不返還給操作系統(tǒng)。如果不選擇此選項(xiàng),則剩余的空間返還給操作系統(tǒng)。〃TRUNCATEONLY 將數(shù)據(jù)庫(kù)縮減后剩余的空間返還給操作系統(tǒng)。使用此命令時(shí)SQL Server 將文件縮減到最后一個(gè)文件分配,區(qū)域但不移動(dòng)任何數(shù)據(jù)文件。選擇此項(xiàng)后,target_percent 選項(xiàng)就無(wú)效了。例6-14:壓縮數(shù)據(jù)庫(kù)mytest 的未使用空間為數(shù)據(jù)庫(kù)大小的20%。
dbcc shrinkdatabase(mytest, 20)運(yùn)行結(jié)果如下:
DBCC execution completed.If DBCC printed error messages, contact your system administrator.(2)DBCC SHRINKFILE DBCC SHRINKFILE 命令壓縮當(dāng)前數(shù)據(jù)庫(kù)中的文件。其語(yǔ)法如下: DBCC SHRINKFILE({file_name | file_id } { [, target_size] |
[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] })各參數(shù)說(shuō)明如下: 〃file_id 指定要壓縮的文件的鑒別號(hào)(Identification number,即ID)。文件的ID 號(hào)可以通過(guò) FILE_ID()函數(shù)或如本章前面所講述 的Sp_helpdb 系統(tǒng)存儲(chǔ)過(guò)程來(lái)得到。〃target_size 指定文件壓縮后的大小。以MB 為單位。如果不指定此選項(xiàng),SQL Server 就會(huì)盡最大可能地縮減文件?!‥MPTYFILE 指明此文件不再使用,將移動(dòng)所有在此文件中的數(shù)據(jù)到同一文件組中的其它文件中去。執(zhí)行帶此參數(shù)的命令后,此文件就可以用ALTER DATABASE 命令來(lái)刪除了。其余參數(shù)NOTRUNCATE 和TRUNCATEONLY 與DBCC SHRINKDATABASE 命令中的含義相同。例6-15: 壓縮數(shù)據(jù)庫(kù)mydb 中的數(shù)據(jù)庫(kù)文件mydb_data2 的大小到1MB。use mydb dbcc shrinkfile(mydb_data2, 1)
企業(yè)管理器里面的方法:
1、打開(kāi)企業(yè)管理器
2、打開(kāi)要處理的數(shù)據(jù)庫(kù)
3、點(diǎn)擊最上面菜單>工具>SQL查詢分析器,打開(kāi)SQL查詢分析器
4、在輸入窗口里面輸入: Code: DUMP TRANSACTION [數(shù)據(jù)庫(kù)名] WITH NO_LOG BACKUP LOG [數(shù)據(jù)庫(kù)名] WITH NO_LOG DBCC SHRINKDATABASE([數(shù)據(jù)庫(kù)名])
點(diǎn)擊綠色的小三角(或按F5)執(zhí)行查詢,等狀態(tài)欄提示處理完成 即可!程序里面的方法: 壓縮數(shù)據(jù)庫(kù)日志--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、減小日志的方法:
一、用如下步做了:
1、DUMP TRANSACTION 庫(kù)名 WITH no_log
2、dbcc shrinkfile(logfilename)
3、收縮數(shù)據(jù)庫(kù)
4、設(shè)定自動(dòng)收縮。
二、分離數(shù)據(jù)庫(kù),刪除日志文件,再附加,OK!右擊數(shù)據(jù)庫(kù)--所有任務(wù)--分離or 附加
三、1、backup log 庫(kù)名 WITH no_log,2、dbcc shrinkfile(logfilename),3、收縮數(shù)據(jù)庫(kù)
4、設(shè)定自動(dòng)收縮。
第二篇:用sql語(yǔ)句恢復(fù)數(shù)據(jù)庫(kù)文件
用sql語(yǔ)句恢復(fù)數(shù)據(jù)庫(kù)文件(*.dmf和*.ldf)
用sql語(yǔ)句恢復(fù)數(shù)據(jù)庫(kù)文件(*.dmf和*.ldf)多用于,由于服務(wù)器操作系統(tǒng)崩潰或無(wú)法啟動(dòng)sql server 時(shí)常用的一種辦法.方法1:
把備份的數(shù)據(jù)庫(kù)數(shù)據(jù)文件(*.mdf)和日志文件(*.ldf)都拷貝到服務(wù)器的一個(gè)目錄下,然后打開(kāi)SQL Server Query(查詢分析器)進(jìn)行操作。
例如:D盤(pán)HisenseSysDate目錄下存有: SysDB_data.mdf,和SysDB_log.ldf備份的文件。通過(guò)sql 語(yǔ)恢復(fù)
為SysDB的數(shù)據(jù)庫(kù)名.(注:恢復(fù)為SysDB的數(shù)據(jù)庫(kù)名在sql server 企管管理器下必須是唯一的,即沒(méi)有SysDB數(shù)所庫(kù)名才可以恢復(fù)為SysDB的數(shù)據(jù)庫(kù)名)。
操作步驟:
1.打開(kāi)sqlserver下面的queryAnalyzer(即查詢分析器)
2.輸入:
EXEC sp_attach_db @dbname = N'SysDB',@filename1 = N'D:dataSysDB_Data.MDF',@filename2 = N'D:dataSysDB _Log.LDF'
go
按”F5”執(zhí)行。
3.以執(zhí)行完成后,把第2步中的所有語(yǔ)句全部刪除,然后輸入如下語(yǔ)句:
USE SysDB
EXEC sp_updatestats
Go
按”F5”執(zhí)行。
提示所有表已經(jīng)恢復(fù)成功后,即可連接軟件了.另附:只恢復(fù)數(shù)據(jù)文件(*.mdf)時(shí),不恢復(fù)事務(wù)日志文件(*.ldf)的方法如下:
首先在企業(yè)管理器下,建立一個(gè)數(shù)據(jù)庫(kù)名(如:SysDB)
然后,同樣打開(kāi)sql server 查詢分析器,然后輸入:
EXEC sp_attach_db @dbname = N'SysDB'
EXEC sp_attach_single_file_db @dbname = SysDB, @physname = 'd:DataSysDB_data.mdf'
go
按F5執(zhí)行完后,再執(zhí)行以下語(yǔ)句:
USE SysDB
EXEC sp_updatestats
Go
這個(gè)語(yǔ)句的作用是僅僅加載數(shù)據(jù)文件,日志文件可以由SQL Server數(shù)據(jù)庫(kù)自動(dòng)添加,但是原來(lái)的日志文件中記錄的數(shù)據(jù)就丟失了。
注:SysDB是數(shù)據(jù)庫(kù)名
文件名和路徑一定要根據(jù)實(shí)際數(shù)據(jù)為文件(*.mdf)和事務(wù)日志文件(*.ldf)所在的目錄要對(duì)應(yīng),否則路徑輸入的不對(duì),則無(wú)法恢復(fù)。
方法2:
如果是由于操作系統(tǒng)或sql server不能啟動(dòng),只有保留的數(shù)據(jù)為文件(如:SysDB_data.mdf)和事務(wù)日志文件(SysDB_log.ldf)時(shí),需重新安裝操作系統(tǒng)或重新安裝sql server時(shí),一定要與上一次安裝的路徑相同(如: d:Program FilesMicrosoft SQL ServerMSSQLDataSysDB.mdf')。
操作系統(tǒng)或sql server安裝成功后,把sql server服務(wù)啟動(dòng)后,在查詢分析器下面,建立與上次相同的數(shù)據(jù)庫(kù)名(如:SysDB),數(shù)據(jù)庫(kù)SysDB成功建立后,然后把sql server服務(wù)停止。
然后把保留的數(shù)據(jù)為文件(如:SysDB_data.mdf)和事務(wù)日志文件(SysDB_log.ldf)拷貝到,新建立的SysDB數(shù)據(jù)庫(kù)所在的目錄下進(jìn)行覆蓋(如: d:Program FilesMicrosoft SQL ServerMSSQLData..'))。最后,啟動(dòng)sql server服務(wù)后,SysDB數(shù)據(jù)庫(kù)中即可恢復(fù)到原保留的數(shù)據(jù)了。
第三篇:WindowsXP無(wú)Administrator用戶(超級(jí)管理員)解決辦法(精選)
Windows-XP系統(tǒng)無(wú)Administrator(超級(jí)管理員)解決方法
1,我的電腦右鍵-?管理
如果不行,繼續(xù)做第二步
2開(kāi)始--運(yùn)行--regedit--打開(kāi)注冊(cè)表編輯器--依次展開(kāi)HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogonSpecialAccountsUserList分支--將右邊的Administrator的值改為1(沒(méi)有就右鍵右邊空白處新建一個(gè)DOWN值,名字寫(xiě)administrator),即可讓Administrator賬戶出現(xiàn)在登錄的歡迎屏幕上。