使用截斷日誌功能,把日誌截斷。
或者修改文件的屬性,改成自增長的方式。如果磁碟空間滿了,則有可能需要先加一個日誌文件,然後再做截斷日誌功能。
② sql server 2008 r2如何收縮資料庫和文件
1、右擊資料庫選擇,打開Files窗口
2、Files窗口,File type 選擇 Log,單擊OK完成日誌收縮。
按以上方法操作沒有效果,原因是資料庫的恢復模式不是簡單模式,只需要將恢復模式改為簡單模式即可用以上操作來收縮日誌,方便又好用。
將資料庫恢復模式改為簡單模式方法:
1、右擊資料庫選擇屬性,彈出窗口如下圖,選擇Options選項,將 Recovery Model 改為 Simple 即可。
按如下方法操作也可收縮日誌:
1、當資料庫恢復模式為簡單時。使用dbcc shrinkfile (logfile_name,target_size)命令來完成。如
use mydb
dbcc shrinkfile (mydb_log,10) --將mydb_log收縮至10m
2、當資料庫恢復模式為完全時。可以先將資料庫模式改為簡單模式,再使用上述方法來進行。
use master
alter database mydb set recovery simple
dbcc shrinkfile (mydb_log,10) --將mydb_log收縮至10m
也可以直接備份事務日誌文件後再收縮:
use master
backup log mydb to disk='d:/dd.bak'
use mydb
dbcc shrinkfile (mydb_log,10) --將mydb_log收縮至10m;
3、通過分離資料庫,然後再刪除事務日誌文件,再附加mdf數據文件,也可以達到某種意義上的事務日誌收縮。
以下是有關日誌文摘
對於每一個資料庫來講,都需要至少一個事務日誌文件。事務日誌文件是整個資料庫的血液,如果沒有事務日誌的話,那麼將無法進行任何操作。
事務日誌有什麼東西?
事務日誌記錄著在相關資料庫上的操作,同時還存儲資料庫恢復(recovery)的相關信息。
事務日誌與資料庫恢復(recovery)是密切相關的,其實資料庫在啟動時,便會進行相關的恢復(recovery)操作,如下所示。當然,在資料庫還原時,也可以指定手工恢復(recovery).任何在資料庫上的改變,如果在事務日誌內被標記為已提交,並用一個LSN(LOG SEQUENCE NUMBER)來標識,同時相關改變就會體現在數據文件上,而被標記為未提交的改變將不會體現在數據文件上。
2010-01-12 18:31:48.72 spid7s Recovery is complete. This is an informationa message only. No user action is required.
事務日誌文件還存儲著資料庫需要回滾的相關信息。在SQL Server資料庫上,默認是隱式提交的,也就是說在查詢分析器裡面進行的每一個操作,在操作完成後,都是默認已經commit,但如果通過指定begin tran 和rollback tran的命令來標識事務時,rollback tran就需要使用事務日誌內的相關信息才可以回滾。當然,如果SQL Server遇到相關錯誤時,如死鎖,那麼也會產生一個內部回滾,這些都需要用到事務日誌文件。
為什麼要收縮事務日誌?
收縮日誌的原因有很多種,有些則是考慮空間不足,有些則是應用程序限制導致的,一般情況下,是不建議對事務日誌進行其他改變的,如需要控制事務日誌的大小,則可以通過安排
③ 怎樣在SQL Server 2000中收縮資料庫
:
第1步,在SQL Server伺服器上依次單擊「開始」→「所有程序」→Microsoft SQL Server→「企業管理器」菜單命令,打開SQL Server Enterprise Manager窗口。使用Windows身份驗證連接上SQL Server。
第2步,在左窗格中依次展開Microsoft SQL Server→「SQL Server組」→「SQL Server伺服器」→「資料庫」目錄,然後右鍵單擊目標資料庫名稱(如CPCW data),選擇「屬性」快捷命令。在打開的「CPCW data 屬性」對話框中單擊「選項」標簽,並在「故障還原」模型下拉菜單中選擇「簡單」模型。最後單擊「確定」按鈕使設置生效,如圖2008120233所示。
圖2008120233 選擇「簡單」數據還原模型
第3步,返回企業管理器窗口,右鍵單擊目標資料庫名稱,選擇「所有任務」→「收縮資料庫」快捷命令,如圖2008120234所示。
圖2008120234 選擇「收縮資料庫」命令
第4步,在打開的「收縮資料庫」對話框中無須調整參數,直接單擊「確定」按鈕開始收縮資料庫的操作。完成後單擊「確定」按鈕即可。日誌在一些異常情況下往往是恢復資料庫的重要依據,收縮資料庫操作並不能在很大程度上減小資料庫大小,其主要作用是收縮日誌大小。因此應當定期進行上述操作,以免資料庫日誌過大,如圖2008120235所示。
圖2008120235 執行「收縮資料庫」操作
④ SQL Server 2000資料庫收縮
1、是不是我的資料庫現在收縮失敗了啊?
答:你的資料庫收縮還沒有完全失敗,但已經可以視為失敗,因為要做完收縮遙遙無期,需要的時間將十分漫長,具體原因見第三問。
2、大家有過對大型資料庫的收縮經驗嗎?時間怎麼這么久啊?
答:資料庫的收縮時間與資料庫大小是成正比的,資料庫越大,收縮時間越長。所以建議要定時進行資料庫收縮,每年一次或幾個月一次,依資料庫增長速度而定。
3、為什麼我按百分比收縮時總是不成功?和盤符所剩空間有關系么?
答:不論是按百分比收縮還是按空間大小進行收縮,都要求資料庫所在磁碟預留一定的空間,最好在15%以上。在資料庫進行收縮時,系統將把這部分預留空間作為緩沖區,用來保存和整理資料庫中的數據,然後再把整理過的數據寫回資料庫。像你說的這種情況,數據文件大小為598G,可用空間為9M,基本無法進行有效的資料庫收縮。建議你把資料庫文件解掛後,復制到750G以上的大容量硬碟中,重新附加資料庫後再進行收縮。
4、資料庫收縮的簡單原理是什麼啊?和盤符所剩空間有關系么?
答:資料庫收縮的簡單原理有兩條,一是清理日誌,因為日誌記錄的是資料庫的歷史操作,在一段時間後,如果沒有保存價值可以清除;二是清理空白空間,這種空間是刪除數據表(一般是臨時表)後造成的,數據表刪除後,資料庫空間不會自動縮小,所以數據文件就會越來越大。和盤符所剩空間的關系,第三問已經回答了。
⑤ 收縮資料庫 執行transact-sql 語句或批處理 報錯……
1、先查看一下是否需要收縮資料庫;是否佔用了過多空間?
2、可以嘗試修復一下資料庫,再做收縮操作。有時候資料庫有一些問題(資料庫可以訪問並不報錯),導致收縮不能正常進行!
⑥ sql server 2000收縮資料庫總是發生死鎖
出現死鎖的情況:
1). 不按同一順序訪問對象。(註:出現循環)
2). 事務中的用戶交互。(註:增加持有資源的時間,較多鎖競爭)
3). 事務冗長並處於多個批處理中。(註:增加持有資源的時間)
4). 使用較高的隔離級別。(註:使用較低的隔離級別(例如已提交讀))
5). 不使用基於行版本控制的隔離級別:2005中支持快照事務隔離和指定READ_COMMITTE
隔離級別的事務使用行版本控制,可以將讀與寫操作之間發生的死鎖幾率降至最低。
6). 不使用綁定連接。
解決辦法:
使用SET LOCK_TIMEOUT timeout_period(單位為毫秒)來設定鎖請求超時。默認情況下,資料庫沒有超時期限(timeout_period值為-1,可以用SELECT @@LOCK_TIMEOUT來查看該值,即無限期等待)。當請求鎖超過timeout_period時,將返回錯誤。timeout_period值為0時表示根本不等待,一遇到鎖就返回消息。設置鎖請求超時,破環了死鎖的第二個必要條件(請求與保持條件)。
壓縮文件,我覺得這樣比較好,
use 資料庫名;
select * from sys.database_files
dbcc shrinkfile(2,1) --前者參數1代表主數據文件,2代表日誌文件;後者參數是大小
⑦ SQL SERVER如何收縮資料庫
工具/材料
SQL SERVER 2008
- 01
首先打開SQL SERVER的管理工具,找到要操作的資料庫,如下圖所示,右鍵單擊選擇屬性
- 02
然後在彈出的資料庫屬性信息界面中來查看一下可用空間,一般都是根據可用空間的大小來判斷是否需要對資料庫進行收縮的,如下圖所示
- 03
然後我們在資料庫屬性頁中選擇」選項」頁面,如下圖所示,這個頁麵包括了自動收縮的選項設置
- 04
在選項頁面的右側找到自動欄信息,如下圖所示,將自動收縮選項設置為TRUE。一旦將自動收縮設置為TRUE,資料庫就會自動監控可用空間的大小進行數據收縮。
- 05
另外還可以在資料庫中進行手動收縮設置,如下圖所示,先選擇資料庫選項的收縮
- 06
在彈出的資料庫收縮界面中,我們將收縮比進行設置,大家根據自己的實際需要設置即可
- 07
另外你也可以選擇收縮資料庫文件的選項,如下圖所示,可以選擇相應的收縮類型,我這里選擇的是釋放未使用空間的選項,大家根據自己情況進行選擇
⑧ 對SQL Server 2008資料庫進行收縮時,會遇到死鎖現象,如何解決。
樓主 可以試試下面的方法:
清空日誌
DUMP TRANSACTION 庫名
WITH
NO_LOG
2.截斷事務日誌:
BACKUP LOG 資料庫名 WITH
NO_LOG
3.收縮資料庫文件
資料庫名--右擊--任務--收縮--文件
--文件類型選擇日誌--收縮操作選擇第二個 將文件收縮到0 ,確定就可以了
4. 也可以用SQL語句來完成
--收縮資料庫
DBCC SHRINKDATABASE(客戶資料)
--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select * from
sysfiles
DBCC SHRINKFILE(1)收縮的時候把恢復模式改為簡單 否則收縮不了
希望解決了樓主的問題
⑨ SQL SERVER如何收縮資料庫
工具/材料
SQLSERVER2008
首先打開SQL SERVER的管理工具,找到要操作的資料庫,如下圖所示,右鍵單擊選擇屬性
然後在彈出的資料庫屬性信息界面中來查看一下可用空間,一般都是根據可用空間的大小來判斷是否需要對資料庫進行收縮的,如下圖所示
然後我們在資料庫屬性頁中選擇」選項」頁面,如下圖所示,這個頁麵包括了自動收縮的選項設置
在選項頁面的右側找到自動欄信息,如下圖所示,將自動收縮選項設置為TRUE。一旦將自動收縮設置為TRUE,資料庫就會自動監控可用空間的大小進行數據收縮。
另外還可以在資料庫中進行手動收縮設置,如下圖所示,先選擇資料庫選項的收縮
在彈出的資料庫收縮界面中,我們將收縮比進行設置,大家根據自己的實際需要設置即可
另外你也可以選擇收縮資料庫文件的選項,如下圖所示,可以選擇相應的收縮類型,我這里選擇的是釋放未使用空間的選項,大家根據自己情況進行選擇
⑩ sql server簡單模式下,收縮資料庫有時候收縮很容易一會兒就收縮了,但是有那麼幾次總是收縮不了
主要是事務日誌占空間
1.「備份類型」選「事務日誌」。
2.收縮->資料庫,選「在釋放未使用的空間前重新組織文件……」。
反復操作上述兩個步驟,如果不能設為單用戶模式,動作要緊湊。
這樣才能收縮到最小(只有幾M)。