SQL SERVER 2008 r2 數據壓縮的兩種方法教程
文章主要介紹了SQL SERVER 2008 r2 數據壓縮的兩種方法,多個網站整理的內容,需要的朋友可以參考下...
文章主要介紹了SQL SERVER 2008 r2 數據壓縮的兩種方法,多個網站整理的內容,需要的朋友可以參考下
有時候sql server 2008 數據庫日志文件太大,需要收縮釋放硬盤內存。如果ldb文件過大會導致數據庫運行緩慢,甚至系統都會卡住。
1.登陸項目平臺數據庫服務器。雙擊SQL Server Management Studio打開數據庫管理。登陸數據庫
2.如下圖,打開數據庫屬性窗口
3.如下圖,更改數據庫恢復模式
4.如下圖,收縮數據庫日志
到這里已經完成了,數據庫的日志收縮
5.如下圖,數據庫恢復模式修改為完整
經過腳本之家小編測試,完美解決,我們成功的把一個84G的文件,壓縮到1M。
下面繼續為大家分享一個通過sql語句實現的,每次手工操作麻煩有沒有。
sql語句實現步驟如下
首先查找要收縮日志文件的數據庫文件名
USE A
GO
SELECT file_id, name FROM sys.database_files;
GO
查詢結果得到日志文件的文件名叫J4_log
不過腳本之家小編測試查詢比較慢,可以通過下面的方法
數據庫屬性>文件>右側日志前面這個名字就是日志文件名了
測試完美沒有異常。
如果感覺比較麻煩,可以設置一個自動任務執行,將上面的文件保存為yasuo.sql
然后通過計劃任務結合cmd,執行如下命令即可,目錄自定設置好
sqlcmd -i yasuo.sql
SQL Server 2008R2執行大文件SQL腳本命令
cd C:\Program Files\Microsoft SQL Server\110\Tools\Binn
sqlcmd -S . -U sa -P 123 -d test -i data.sql
參數說明:-S 服務器地址 -U 用戶名 -P 密碼 -d 數據庫名稱 -i 腳本文件路徑
本地服務器地址可以寫 . 比較輕松,也可寫.或者(local)或者IP地址
這樣就可以了,以后新建一個查詢,直接運行就可以了。
下面的每經過測試,而且明顯因為版本不同,不一定能使用。
一般情況下不建議壓縮數據,如果壓縮數據建議先備份
第一種方法:通過sql server management studio
首先我們要下載能操作 2008的工具 sql server management studio 這個工具在sql server 2008 r2 安裝后就會有!
一起安裝妥當,我們就可以開始選擇了看圖! 所有的都是單擊右鍵,凡在你需要壓縮的表上面,依次選擇到數據庫就可以了!
然后就是這樣的畫面!點擊確定,就可以了! 記住是“收縮”而不是壓縮,但是效果都是一樣的!
第二種:通過存儲過程
SQL Server 2008中的數據壓縮
SQL Server 2008中引入了數據壓縮的功能,允許在表、索引和分區中執行數據壓縮。這樣不僅可以大大節省磁盤的占用空間,還允許將更多數據頁裝入內存中,從而降低磁 盤IO,提升查詢的性能。當然,凡事有利有弊,在啟用數據壓縮后,數據庫服務器就需要額外的CPU資源來進行壓縮處理。一般說來,數據庫服務器的CPU占 用率不會太高,而磁盤IO容易成為瓶頸,所以在大多數情況下對大數據庫特別是數據倉庫啟用該項功能還是利大于弊。
SQL Server 2008的數據壓縮分為行壓縮和頁壓縮兩種。行壓縮主要是通過將固定長度類型存儲為可變長度類型來實現,同時還減少了與記錄相關聯的元數據開銷。頁壓縮在行壓縮的基礎上又增加了前綴壓縮和字典壓縮,能獲得更大的壓縮率。
要 啟用數據庫壓縮只需在建表語句后加入WITH (DATA_COMPRESSION = ROW)或是WITH (DATA_COMPRESSION = PAGE)即可。如需將現有的索引修改為啟用壓縮,可通過ALTER INDEX index ON Table REBUILD WITH (DATA_C0MPRESSION=ROW)或ALTER INDEX index ON Table REBUILD WITH (DATA_C0MPRESSION=PAGE)實現。
最后提供一段簡單的用以判斷是否需要壓縮數據表的腳本,并自動生成壓縮腳本供系統管理員執 行。這里用到未公開的存儲過程sp_MSforeachtable。在這段腳本中@precommand參數用于執行command指令執行前的SQL命 令,建立一張臨時表用于保存數據表的信息,@command1參數表示需要執行的SQL命令,對每一張表都利用sp_spaceused存儲過程獲取表的 磁盤占用信息并保存到建立的臨時表中,@postcommand參數用于執行command指令后的SQL命令,將之前建立的臨時表與系統關聯,根據設置 的條件(數據表占用空間大于10G)生成數據表壓縮腳本。
exec sp_MSforeachtable@precommand=N'create table ##(id int identity,name sysname,rows int,reserved Nvarchar(50),data varchar(50),indexdata varchar(50),unused varchar(50))',@command1=N'insert into ##(name,rows,reserved,data,indexdata,unused) exec sp_spaceused ''?''update ## set data=SUBSTRING(data, 1, LEN(data) - 2) where id=scope_identity() AND LEN(data) >=2',@postcommand=N'SELECT ''ALTER TABLE '' + TABLENAME + '' REBUILD WITH ( DATA_COMPRESSION = PAGE )'' FROM sys.tables AJOIN(SELECT C.name + ''.'' + A.name AS TABLENAME, object_id FROM ## AJOIN sys.objects BON A.name = B.nameJOIN sys.schemas CON B.schema_id = C.schema_idWHERE CAST(data AS int) > 10000000 AND object_id IN (SELECT object_id FROM sys.tables)) BON A.object_id = B.object_id AND type = ''U'';drop table ##'
下面是一些比較好的補充:
sql2008r2如何進行日志文件壓縮?
為何日志文件會過大?
最常見的問題是數據庫為FULL Recovery Model但是從沒有做過LOG BACKUP。因為只有Log Backup才可以Truncate Log導致之前的日志文件重用,所以先看一下這個。
如果是上面的問題,你不需要備份將數據庫恢復模式修改為Simple,然后Shrink Log File就解決了。
Good Luck。
SQL Server 2008如何壓縮日志(log)文件?
在SQL Server 2000/2005中可以快速壓縮日志log文件,通過SQL,
方法一:
--BigData為數據庫名
DUMP TRANSACTION BigData WITH NO_LOG
BACKUP LOG BigData WITH NO_LOG
DBCC SHRINKDATABASE(BigData )執行以上語句可以快速壓縮日志文件到1M。
但是以上語句中前兩行在SQL Server 2008下無法執行 ,
第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.”
第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ”
第三行可以執行。但日志log文件沒有任何變化。
原來SQL Server 2008 已經不再支持 DUMP TRANSACTION和BACKUP LOG WITH NO_LOG,詳情請看
http://msdn.microsoft.com/zh-cn/library/ms187315%28SQL.90%29.aspx
http://msdn.microsoft.com/zh-cn/library/ms186865.aspx
sql Server 2005說明中明確:包含 DUMP 語句是為了向后兼容。而 后續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能,并著手修改當前還在使用該功能的應用程序。 使用 BACKUP。
SQL Server 2008說明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 選項已廢止。使用完整恢復模式或大容量日志恢復模式時,如果必須刪除數據庫中的日志備份鏈,請切換至簡單恢復模式。有關詳細信息,請參閱有關從完整恢復模式或大容量日志恢復模式切換的注意事項。
嘗試方法二:
----Logical Files :
--CMS1.5_Data
--CMS1.5_Log
DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
GO無效。
嘗試方法三:
use DB_NAME
sp_dboption DB_NAME, "trunc. log on chkpt.", true
checkpoint
sp_dboption DB_NAME, "autoshrink", true
每一行指令請單獨執行。其中的DB_NAME是指Database Name,在執行完語法后的數小時至數十小時,該LOG檔會逐漸釋放空間,最后大約都會維持在數1024KB左右。
有沒有更快的方法呢?
嘗試方法四:(請提前備份文件!!)
1. Detach數據庫。
2.刪除log文件。
3. 附加數據庫,選移除log文件,此時SQL Server 會自動重新建立一個512K 的Log 文件。
方法五(沒有試過,請提前備份文件!!):
1. 停止 SQL Server 的服務
2. 使用刪除 Log文件
3. 重新啟動SQL Server 服務,此時SQL Server 會自動重新建立一個1MB 的Log 文件。
方法六: (塵塵提供)
先設置恢復模式為“簡單恢復”模式,再收縮:
USE BigData ;GOALTER DATABASE BigDataSET RECOVERY SIMPLE;--設置簡單恢復模式GODBCC SHRINKFILE (BigData_Log, 1);GOALTER DATABASE BigDataSET RECOVERY FULL;--恢復為原模式GO
方法七: (塵塵提供)
USE BigData;GOBACKUP LOG DATABASENAME TO DISK='d:\test.bak'-- Shrink the trun cated log file to 1 MB.DBCC SHRINKFILE (Bigdata_Log, 1);GO
到這關于sqlserver 2008 數據壓縮的方法就介紹到這了,據小編多年經驗來看,2000、2005確實需要壓縮,但2008真的沒有壓縮的必要了,具體原因可以參考這篇文章。
- SQL Server 2000/2005/2008刪除或壓縮數據庫日志的方
- SQL Server數據庫查看login所授予的具體權限問題
- SQL Server數據庫怎么找出一個表包含的頁信息(Page)
- Windows server 2016服務器上安裝oracle數據庫的教程
- SQL Server數據庫基礎之行數據轉換為列數據
- SQL server數據庫創建代碼 filegroup文件組修改的示例
- SQLServer數據庫處于恢復掛起狀態的解決辦法
- SQL Server數據庫之datepart和datediff應用查找當天上
- SQL Server數據庫中的數據類型隱式轉換問題
- Thinkphp5框架實現獲取數據庫數據到視圖的方法
SQL Server 2000/2005/2008刪除或壓縮數據庫日志的方法
最近win2008 r2的服務器比較卡,打開服務器顯示也特別慢,sqlserver業務費正常執行,服務器桌面操作也比較卡,經過多方研究發現原來是sqlserver日志文件已經達到了84G導致,這里就為大家分享一下解決方法,需要的朋友可以參考一下...
SQL Server數據庫查看login所授予的具體權限問題
在SQL Server數據庫中如何查看一個登錄名(login)的具體權限呢,下面腳本之家小編給大家帶來了SQL Server查看login所授予的具體權限問題,感興趣的朋友一起看看吧...
SQL Server數據庫怎么找出一個表包含的頁信息(Page)
文章主要給大家介紹了關于SQL Server是如何找出一個表包含的頁信息(Page)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SQL Server具有一定的參考學習價值,...
Windows server 2016服務器上安裝oracle數據庫的教程圖解
文章主要介紹了Windows server 2016 安裝oracle的教程圖解,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下 1.安裝oracle Oracle的安...
SQL Server數據庫基礎之行數據轉換為列數據
文章主要給大家介紹了關于SQL Server基礎之行數據轉換為列數據的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SQL Server具有一定的參考學習價值,需要的朋友們...
SQL server數據庫創建代碼 filegroup文件組修改的示例代碼
文章主要介紹了SQL server數據庫創建代碼 filegroup文件組修改的實現方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下數據庫的操作:1. 對數據文件...
SQLServer數據庫處于恢復掛起狀態的解決辦法
文章主要介紹了SQLServer數據庫處于恢復掛起狀態的解決辦法 ,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下.一、總結 如果數據庫處...
SQL Server數據庫之datepart和datediff應用查找當天上午和下午的數據
文章主要介紹了sqlserver之datepart和datediff應用查找當天上午和下午的數據,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下DATEPART() 函數用于返回日期/時間的單獨...
SQL Server數據庫中的數據類型隱式轉換問題
文章主要介紹了SQL Server 中的數據類型隱式轉換問題,本文給大家介紹的非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下寫這篇文章的時候,還真不知道如何取名,也不知道這...
Thinkphp5框架實現獲取數據庫數據到視圖的方法
文章主要介紹了Thinkphp5框架實現獲取數據庫數據到視圖的方法,涉及thinkPHP5數據庫配置、讀取、模型操作及視圖調用相關操作技巧,需要的朋友可以參考下。這是學習thinkhp5的...