嗨,我是柯特我是與 GSE 團隊合作的資深首席工程師
這段影片的目的是示範如何縮小 Microsoft SQL Server 資料庫事務記錄檔我們將查看收縮事務日誌的不同方法,以及如果收縮日誌操作無法按預期運行時該怎麼做。
我們有幾種不同的方法來壓縮紀錄檔我們可以進入 SQL Server Management Studio前往資料庫的屬性 並在其中執行收縮操作 我們將首先示範這一點
然後我們還有執行 TSQL ShrinkFile 命令的操作。在此影片中 我們要討論的另一件事 是如果壓縮檔案作業無法如預期執行 會發生什麼情況 我們將討論在這種情況下您可能要採取的選項 我們進入 Studio Management
我們將使用“AdventureWorks2017”資料庫,如果我們轉到資料庫功能表上的“任務”並下降到“收縮”,我們有兩個不同的選項。
我們可以在資料庫級別處理資料庫中的所有檔或處理特定檔,在這種情況下,我們肯定希望使用特定檔。現在,根據預設,您會看到,如果您在這裡查看我們的調色板,我們會在「檔案類型」下顯示「資料」。
我們不會對資料庫檔執行任何操作,而是希望縮小事務日誌,因此事務日誌在“文件類型”下的字面意思是“Log”。現在我們有一些關於資料庫的資訊
資料庫日誌相當小,這是一個新資料庫,我們看到分配給該事務日誌的大小,我們看到可用空間。可用空間可能很重要,因為如果沒有可用空間,我們就無法對資料庫執行收縮檔操作。
有幾種不同的選項。我們不會在這裡詳細介紹,但我們可以選擇釋放未使用的空間,這基本上截斷了事務日誌。我們可以透過按一下「確定」來執行此命令 系統會繼續執行壓縮 或嘗試在該資料庫上收縮取而代之的是,我們將繼續查看用於收縮資料庫的 TSQL 選項。
我今天有點懶,所以我要繼續到“腳本操作到剪貼板”,它將提取事務,如果我們在這裡單擊“確定”,就會運行 TSQL 命令。
我要按一下「取消」,然後貼上 TSQL 命令 以縮小我們的 AdventureWorks2017 資料庫現在,再次執行該命令,這是一個壓縮檔命令。我們正在處理 AdventureWorks2017 日誌,我們可以指定我們希望該日誌有多小。
在本例中,我們將保留預設值為零。如果未在此處定義任何內容,或者將值保留為零,則會嘗試將檔縮小到原始檔大小。我們有“truncateonly”選項,它將事務日誌中的可用空間放回操作系統。
因此,當我們運行它時,現在我們有一個關於它所做的事情和當前規模的報告。所以它繼續將其減少到大約一個兆格,這對我們來說很棒。那裡給了我們更多的額外磁碟空間。所以我們也想在這段影片中討論 假設我們執行壓縮檔案但無法成功執行會發生什麼情況
收縮檔操作失敗的首要原因是資料庫中沒有足夠的可用空間來執行收縮檔命令。我們要做的第一件事是弄清楚檔中的可用空間量。
現在,我們確實通過GUI功能表看到了它,我們也可以對其運行這個特定的命令 - 現在我們已經改變了我們的重點,我們正在使用AdventureWorks2019資料庫。執行這個特定的命令,也就是 select 命令,它會為我們提供資料庫中所顯示的可用空間量
目前我們看到資料庫中有三兆的可用空間。我們可以使用兩種不同的選項來嘗試在該特定資料庫中的可用空間不足的情況下減少資料庫。我們可以更改冒險作品2019資料庫的選項,恢復選項。
如果我們將復原選項變更為「simple」,並執行 dbcc shrink file 命令,應該會將檔案縮小到比原始大小小得多的大小。每當我們將資料庫置於簡單模式時,事務日誌都會處理活動事務,並且任何不活動的內容都會從日誌中清除。
我們可以執行此特定命令。大多數生產資料庫將處於完全恢復狀態,因此採用簡單方法允許我們成功運行收縮檔命令,或者至少讓我們有機會運行壓縮檔命令。所以我們處於簡單模式,而我們的情況是無法成功執行這個命令
進入簡單模式后,我們成功運行同步收縮檔操作,它為我們提供了有關新檔大小的資訊,在這種情況下,我們要做的最後一件事就是將其放回完全恢復模式。
因此,在這一點上,我們已經使用 shrink file 命令採用了一個無法管理的事務日誌檔,並實際上將其恢復到能夠收縮該檔的狀態,然後我們將其放回現在可以備份的模式,以確保我們獲得最新的事務資訊。
以上就是我們關於如何縮小Microsoft SQL Server 資料庫事務日誌的演示。
謝謝收看