當前位置:首頁 » 文件管理 » sql資料庫壓縮

sql資料庫壓縮

發布時間: 2023-04-19 00:48:54

⑴ 如何讓sql Server資料庫自動備份並壓縮成rar文件

1、 先開啟xm_cmdshell服務
xp_cmdshell 擴展存儲過程將命令字元串作為操作系統命令 shell 執行,並以文本行的形式返回所有輸出。由於xp_cmdshell 可以執行任何操作系統命令,所以一旦SQL Server管理員帳號(如sa)被攻破,那麼攻擊者就可以利用xp_cmdshell 在SQL Server中執行操作系統命令,如:創建系統管理員,也就意味著系統的最高許可權已在別人的掌控之中。由於存在安全隱患,所以在SQL Server 中, xp_cmdshell 默認是關閉的。

兩種方式啟用xp_cmdshell
a.打開外圍應用配置器—>
功能的外圍應用配置器—>
實例名Database Enginexp_cmdshell—>啟用

b.sp_configure
--開啟xp_cmdshell部分
--------------------------------------------------
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

--通過xp_cmdshell執行shell命令的部分
--------------------------------------------------
Exec xp_cmdshell 'bcp '
GO

--關閉xp_cmdshell部分
-----------------------------------------------------
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 0
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO

2、新建立一個作業,名稱命名為「MyDb完全備份」,在分類下面選擇「資料庫維護」,然後新建立作業第一個步驟,步驟名為「對數據進。
DECLARE @strSql VARCHAR(1000)
,@strSqlCmd VARCHAR(1000)
,@timeDateDiff INT
SET @timeDateDiff = DATEDIFF(week,0,GETDATE())
SET @timeDateDiff = CASE DATEPART(WEEKDAY,GETDATE())
WHEN 1 THEN @timeDateDiff -1
ELSE @timeDateDiff END
SET @strSql='E:\DataBackup\LiangJiaLun219' -- 備份目錄及備份的文件頭
+CONVERT(CHAR(8),DATEADD(week, @timeDateDiff,0),112) -- 完全備份日期
+'_0100' -- 完全備份時間
+'完全備份'
SET @strSqlCmd= @strSql+'.BAK' --備份文件的擴展名
BACKUP DATABASE [LiangJiaLun219]
TO DISK = @strSqlCmd WITH INIT
,NOUNLOAD
,NAME = N'LiangJiaLun219 備份'
,NOSKIP
,STATS = 10
,NOFORMAT

3、然後開始執行對資料庫的壓縮,在步驟中再新建一個作業,步驟名為「壓縮資料庫」,然後在命令框中輸入如下的SQL代碼:
DECLARE @strSql VARCHAR(1000)
,@strSqlCmd VARCHAR(1000)
,@timeDateDiff INT
,@strWeekDay VARCHAR(20)
SET @timeDateDiff= DATEDIFF(week,0,GETDATE())
SET @timeDateDiff= CASE DATEPART(WEEKDAY,GETDATE())
WHEN 1 THEN @timeDateDiff-1
ELSE @timeDateDiff END
SET @strSql='E:\DataBackup\LiangJiaLun219' -- 備份目錄及備份的文件頭
+CONVERT(CHAR(8),DATEADD(week,@timeDateDiff,0),112) -- 完全備份日期
+'_0100' -- 完全備份時間
+'完全備份'
SET @strWeekDay= CASE DATEPART(WEEKDAY,GETDATE()) WHEN 1 THEN '星期天'
WHEN 2 THEN '星期一'
WHEN 3 THEN '星期二'
WHEN 4 THEN '星期三'
WHEN 5 THEN '星期四'
WHEN 6 THEN '星期五'
WHEN 7 THEN '星期六' END
SET @strSqlCmd= 'ECHO 壓縮開始日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT
SET @strSqlCmd= 'RAR.EXE A -R '+@strSql+'.RAR '+@strSql+'.BAK >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
PRINT LEN(@strSqlCmd)
PRINT (@strSqlCmd)
EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT
SET @strSqlCmd= 'ECHO 壓縮日期: '+CONVERT(VARCHAR(20),GETDATE(),120)+' '+@strWeekDay+' >> E:\DataBackup\CompressDataBase\LiangJiaLun219'+CONVERT(CHAR(6),DATEADD(week,@timeDateDiff,0),112)+'.txt'
EXEC master.dbo.XP_CMDSHELL @strSqlCmd,NO_OUTPUT

4、設定計劃任務
5、如果執行一下代碼 首先必須安裝WinRar 然後 在環境變數中---系統環境變數 Path 中 把Rar.exe 的路徑加進去 (如:C:/Program Files/WinRar/) 這樣就可以了。只需要加路徑。。。不需要Rar.exe。

⑵ SQL資料庫如何壓縮

具體方法有3種。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在這里衡中是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定資料庫的所有數據和日誌文件,執行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是謹譽要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫文件中所要的剩餘可用空間百分比。
2.收縮一次一個特定資料庫中的數據或日誌文件,執行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收縮的文件的標識
(id)
號,若要獲得文件
id,請使用
file_id
函數或在當前資料庫中搜索
sysfiles;target_size是用兆位元組表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc
shrinkfile
將文件大小減少到默認文件大小。兩個dbcc都可以帶上參數notruncate或truncateonly,具體意思查看聯機幫助.
方法二:
第一步:
先備份整個資料庫以備不測

第二步:
備份結束後,在query
analyzer中執行如下的語句:
exec
sp_detach_db
yourdbname,true
--卸除這個db在mssql中的注冊信息
第三步:
到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄
第四步:
在query
analyzer中執行如下的語句:
exec
sp_attach_single_file_db
yourdbname,'
d:\mssql\data\yourdbname_data.mdf
'
--以單文件的方式注冊該db,如果成功則mssql將自動為這個db生成一個500k的日誌文件。
方法三:
1.
進入企業管理器,選中資料庫,比如demo
2.
所有任務->分離資料庫
3.
到資料庫文件的存放目錄,將muonline_log.ldf文件刪除,以防萬一,你可以拷出去
4.
企業管理器->附加資料庫,選muonline,這個時候你會看見日誌文件這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否創建一個新的,確定就是了。
5.
記得資料庫重新附加後用戶要重新設置一下。
如果以後,不祥攔段想要它變大:
sql2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用sql語句:
alter
database
資料庫名
set
recovery
simple

⑶ 怎樣壓縮MSSQL資料庫

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:

怎樣壓縮MSSQL資料庫,我的資料庫文件顯示佔用空間120M,可用空間105M,其實正直有用的也只有幾十M,怎樣壓縮呢?請哪位朋友提供解決方法!

解析:

資料庫在使用一段時間後,時常會出現因數據刪除而造成資料庫中空閑空間太多的情況,這時就需要減少分配給資料庫文件和事務日誌文件的磁碟空間,以免浪費磁碟空間。當資料庫中沒有數據時,可以修改資料庫文件屬性直接改變其佔用空間,但當資料庫中有數據時,這樣做會破壞資料庫中的數據,因此需要使用壓縮的方式來縮減資料庫空間。可以在資料庫屬性選項中選擇「Auto shrink」選項,讓系統自動壓縮資料庫,也可以用人工的方法來壓縮。人工壓縮資料庫有以下兩種方式:

1、用Enterprise Manager 壓縮資料庫

在Enterprise Manager 中在所要壓縮的資料庫上單擊右鍵,從快捷菜單中的「所有任務(All Tasks)」中選擇「Shrink Database(壓縮資料庫)」選項

、用Transact-SQL 命令壓縮資料庫

可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令來壓縮資料庫。其中DBCC SHRINKDATABASE 命令對資料庫進行壓縮,DBCC SHRINKFILE 命令對資料庫中指定的文件進行壓縮。

(1) DBCC SHRINKDATABASE

DBCC SHRINKDATABASE 命令語法如下:

DBCC SHRINKDATABASE (database_name [, target_percent]

[, {NOTRUNCATE | TRUNCATEONLY}] )

各參數說明如下:

target_percent 指定將資料庫壓縮後,未使用的空間占資料庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所佔的比例,則資料庫不會被壓縮。並且壓縮後的資料庫不能比資料庫初始設定的容量小。

NOTRUECATE

將資料庫縮減後剩餘的空間保留在資料庫,中不返還給操作系統。如果不選擇此選項,則剩餘的空間返還給操作系統。

TRUNCATEONLY

將資料庫縮減後剩餘的空間返還給操作系統。使用此命令時SQL Server 將文件縮減到最後一個文件分配,區域但不移動任何數據文件。選擇此項後,target_percent 選項就無效了。

壓縮資料庫mytest 的未使用空間為資料庫大小的20%。

dbcc shrinkdatabase (mytest, 20)

運行結果如下:

DBCC execution pleted. If DBCC printed error messages, contact your system administrator.

(2) DBCC SHRINKFILE

DBCC SHRINKFILE 命令壓縮當前資料庫中的文件。其語法如下:

DBCC SHRINKFILE ( {file_name | file_id }

{ [, target_size] |

[, {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )

各參數說明如下:

file_id

指定要壓縮的文件的鑒別號(Identification number, 即ID)。文件的ID 號可以通過 FILE_ID()函數或如本章前面所講述的Sp_helpdb 系統存儲過程來得到。

target_size

指定文件壓縮後的大小。以MB 為單位。如果不指定此選項,SQL Server 就會盡最大可能地縮減文件。

EMPTYFILE

指明此文件不再使用,將移動所有在此文件中的數據到同一文件組中的其它文件中去。執行帶此參數的命令後,此文件就可以用ALTER DATABASE 命令來刪除了。

其餘參數NOTRUNCATE 和TRUNCATEONLY 與DBCC SHRINKDATABASE 命令中的含義相同。

例6-15: 壓縮資料庫mydb 中的資料庫文件mydb_data2 的大小到1MB。 use mydb dbcc shrinkfile (mydb_data2, 1)

⑷ 求助:SQL壓縮資料庫語句

1.清空日誌
DUMP TRANSACTION ABCD WITH NO_LOG

2.截斷事務日誌:
BACKUP LOG ABCD WITH NO_LOG
--收縮資料庫
DBCC SHRINKDATABASE(ABCD)

⑸ SQL資料庫如何壓縮

可以使用DBCC
SHRINKDATABASE
和DBCC
SHRINKFILE
命令來壓縮資料庫。
其中DBCC
SHRINKDATABASE
命令對資料庫進行壓縮,DBCC
SHRINKFILE
命令對資料庫中指定的文件進行壓縮。
DBCC
SHRINKDATABASE
命令語法如下:
DBCC
SHRINKDATABASE
(database_name
[,
target_percent]
[,
{NOTRUNCATE
|
TRUNCATEONLY}]
)
各參數說明如下:
target_percent:
指定將資料庫譽胡慶壓縮後,未使用的空間占資料庫大小的百分之幾。如果指定的百分比過大,超過了壓縮前未使用空間所佔的比慶握例,則資料庫不會被壓縮。並且壓縮後的資料庫不能比資料庫初始設定的容量小。
NOTRUECATE:
將資料庫縮減後剩餘的空間保留在資料庫,中不返做讓還給操作系統
,如果不選擇此選項,則剩餘的空間返還給操作系統。
TRUNCATEONLY

將資料庫縮減後剩餘的空間返還給操作系統。使用此命令時SQL
Server
將文件縮減到最後一個文件分配,區域但不移動任何數據文件。選擇此項後,target_percent
選項就無效了。

⑹ SQLServer2008中的數據壓縮功能

SQL Server SP 為我們帶來了vardecimal功能 這項功能使得原來定長的decimal數據在數據文件中以可變長的格式存儲 據稱這項功能可以為典型的數據倉庫節省 %的空間 而SQL Server 在這一基礎上又進一步增強了數據壓縮功能 SQL Server 現在支持行壓縮和頁面壓縮兩種選項 數據壓縮選項可以在以下對象上啟用

未創建聚簇索引的表

創建聚簇索引的表

非聚簇索引(對表設置壓縮選項不會影響到該表上的非聚簇索引 因此聚簇索引的壓縮需要單獨設置)

索引視圖

分區表和分區索引中的單個分區

為什麼需要數據壓縮

首先可能需要討論的問題就是為什麼在存儲成本不斷降低的今天 微軟還要煞費苦心地在SQL Server中實現並且不斷改進數據壓縮技術呢?

盡管存儲成本已經不再是傳統意義上的首要考慮因素 但是這並不代表資料庫尺寸不是一個問題 因為資料庫尺寸除了會影響到存儲成本之外 還極大地關聯到管理成本和性能問題

首先我們來討論為什麼會有管理成本的問題?因為資料庫需要備份 資料庫的尺寸越大 那麼備份時間就會越長 當然另外一點就是消耗的備份硬體成本也會隨之提高(包括需要的備份介質成本和為了滿足備份窗口而需要更高級的備份設備帶來的采購成本) 還有一種管理成本就是資料庫的維護成本 例如我們經常需要完成的DBCC任務 資料庫尺寸越大 我們就需要更多的時間來完成這些任務

接著我們再看看性能問題 SQL Server在掃描磁碟讀取數據的時候都是按照數據頁為單位進行讀取的 因此如果一張數據頁中包含的數據行數越多 SQL Server在一次數據頁IO中獲得的數據就會越多 這樣也就帶來了性能的提升

最後考慮存儲的成本 按照原先SQL Server SP 中vardecimal的壓縮數據為例 %的空間節省也就意味著 %的存儲成本 而按照SQL Server 當前放出的測試數據 採用新的數據壓縮技術可以達到 X X的存儲率 再加上如果企業要考慮容災而增加的存儲空間 這樣節省的存儲硬體成本也將是想當可觀的

如何使用數據壓縮

SQL Server 中的壓縮選項可以在創建表或索引時通過Option進行設置 例如 CREATE TABLE TestTable (col int col varchar( )) WITH (DATA_PRESSION = ROW);

如果需要改變一個銷滲銷分區虧游的壓縮選項 則可以用以下語句 ALTER TABLE TestTable REBUILD PARTITION = WITH (DATA PRESSION = PAGE);

如果需要為分區表的各個分區設置不同的壓縮選項 可以使用以下的語句 (SQL Server 可以對不同的分區使用不同的壓縮選項 這一點對於數據倉庫應用是非常重要的 因為數據倉庫的事實表通常都會有一個或數個熱分區 這些分區中的數據經常需要更新 為了避免數據壓縮給這些分區上的數據更新帶來額外的處理載荷 可以對這些分區關閉壓縮選項) CREATE TABLE PartitionedTable (col int col varchar( )) ON PS (col )喊冊 WITH ( DATA_PRESSION = ROW ON PARTITIONS( ) DATA_PRESSION = PAGE ON PARTITION( TO ));

如果是為某個索引設置壓縮選項的話 可以使用

CREATE INDEX IX_TestTable_Col ON TestTable (Col ) WITH (DATA_PRESSION = ROW);

如果是修改某個索引的壓縮選項 可以使用 ALTER INDEX IX_TestTable_Col ON TestTable REBUILD WITH (DATA_PRESSION = ROW);

SQL Server 同時還提供了一個名為sp_estimate_data_pression_savings存儲過程幫助DBA估計激活壓縮選項後對象尺寸

數據壓縮是怎樣工作的

對於行壓縮 SQL Server 採用以下三種方法來節省存儲空間

減少了與記錄相關聯的元數據開銷 此元數據為有關列 列長度和偏移量的信息 在某些情況下 元數據開銷可能大於舊的存儲格式

它對於數值類型(例如 integer decimal和float)和基於數值的類型(例如 datetime和money)使用可變長度存儲格式

它通過使用不存儲空字元的可變長度格式來存儲定長字元串

對於頁面壓縮 SQL Server 則是在一張數據頁面上依次採用

行壓縮

前綴壓縮

字典壓縮

配置數據壓縮功能需要注意的

盡管SQL Server 的數據壓縮功能非常有價值 但是仍然需要注意一些問題

數據壓縮功能僅在企業版和開發版中可用

數據壓縮可以讓一張數據頁存儲更多的數據行 但是並不能改變單行數據最長 位元組這一限制

在一張已經設置了數據壓縮的表上創建聚簇索引時 聚簇索引默認繼承原表上的壓縮選項

在未設置聚簇索引的表上設置頁面壓縮時 只有以下情況才會獲得頁面壓縮的實際效果

數據使用BULK INSERT語法添加到表中

數據使用INSERT INTO WITH (TABLOCK)語法添加到表中

執行帶有頁面壓縮選項的ALTER TABLE REBUILD命令

在未設置聚簇索引的表上更改壓縮選項 會導致該表上所有非聚簇索引都需要重建 因為這些非聚簇索引指向的數據行地址已經都發生了改變

在改變壓縮選項時所需要的臨時空間大小與創建索引是所需要的空間是一樣的 因此對於分區表 我們可以逐個分區設置壓縮選項來減少臨時空間的需求壓力

由於SQL Server 中數據壓縮技術其實是SQL Server SP 中vardecimal技術的一個超集 因此設置了數據壓縮後就沒有必要保留vardecimal了 當然SQL Server 為了保持向後兼容性 在當前版本中仍然保留了vardecimal 但是SQL Server 的下一個版本及可能就會棄用vardecimal選項 因此做了這些設置的資料庫應該盡早改變到數據壓縮設置下

lishixin/Article/program/Oracle/201311/17483

⑺ 怎樣在SQL Server 2000中收縮資料庫

本主題介紹如何使用
SQL
Server
Management
Studio
中的對象資源管理器收縮資料庫。收縮後的資料庫不能小於資料庫的最小大小。最小大小是在資料庫最初創建時指定的大小,或是上一次使用文件大小更改操作(如
DBCC
SHRINKFILE)設置的顯式大小。例如,如果資料庫最初創建時的大小為
10
MB,後來增長到
100
MB,則該資料庫最小隻能收縮到
10
MB,即使已經刪除資料庫的所有數據也是如此。
收縮資料庫
在對象資源管理器中,連接到
SQL
Server
資料庫引擎實例,然後展開該實例。
展開「資料庫」,再右鍵單擊要收縮的資料庫。
指向「任務」,指向「收縮」,然後單擊「資料庫」。
根據需要,可以選中「在釋放未使用的空間前重新組織文件」復選框。如果選中該復選框,必須為「收縮後文件中的最大可用空間」指定值。
選中該選項的作用與執行
DBCC
SHRINKDATABASE
時指定
target_percent
值相同。清除該選項的作用與使用
TRUNCATEONLY
選項執行
DBCC
SHRINKDATABASE
相同。TRUNCATEONLY
將文件收縮到最後分配的區。這將減小文件的大小,但不移動任何數據。默認情況下,該選項為清除狀態。
輸入收縮資料庫後資料庫文件中剩下的最大可用空間百分比。允許的值介於
0

99
之間。該選項僅在選中「在釋放未使用的空間前重新組織文件」時可用。
單擊「確定」。
收縮資料庫

資料庫中的資料庫文件過於龐大或者存在未使用頁時,可以使用收縮資料庫方法來實現對資料庫的收縮,同樣,事務日誌文件也可以收縮。資料庫文件可以作為組或
單獨地進行手工收縮,也可設置為按指定的時間間隔自動收縮。收縮資料庫的活動是在後台進行,並不影響資料庫內的用戶活動。
操作步驟如下:
(1)打開SQL
Server企業管理器。雙擊打開「資料庫」節點,在要收縮的資料庫名稱上,單擊滑鼠右鍵,在彈出的快捷菜單中選擇「所有任務」→「收縮資料庫」命令,彈出「收縮資料庫」對話框,如圖1所示。
圖1
收縮資料庫
(2)指定資料庫的收縮量,可以從以下選項中選擇。
在「收縮後文件中的最大可用空間」文本框中輸入收縮後資料庫中剩餘的可用空間量。以「資料庫大小,可用空間」值作為依據。如最大可用空間是「25%」,則在該選項中設置小於該數值的百分比,如「12%」。
選擇「在收縮前將頁移到文件起始位置」復選框,使釋放的文件空間保留在資料庫文件中,並使包含數據的頁移到資料庫文件的起始位置。
(3)在「調度」選項框中,選擇是否自動定期執行資料庫壓縮操作。選中「根據本調度來收縮資料庫」復選框,單擊「更改」按鈕,創建或更改自動收縮資料庫的頻率和時間。
(4)最後單擊「確定」按鈕完成操作。

⑻ 如何實現SQL Server 2005資料庫自動備份壓縮

實現SQL server2005資料庫自動備份壓縮功能有兩種方式,自動功能和用第三方工具,自帶功能比較復雜,請直接參考網路文庫教程,如下:http://wenku..com/link?url=HzqV-g1lympn-L7wFynKq2p4N0za04ZoV5LpW
用第三方工具「多備份」也可以實現資料庫自動備份壓縮,節省存儲空間

⑼ SQL Server 壓縮日誌及資料庫文件大小

請按步驟進行 未進行前面的步驟時 請不要做後面的步驟 以免損壞你的資料庫

一般不建議做第 兩步 第 步不安全 有可能損壞資料庫或丟失數據 第 步如果日誌達到上限 則以後的資料庫處理會失敗 在清理日誌後才能恢復

清空日誌

DUMP TRANSACTION 庫名 WITH NO_LOG

截斷事務日誌

BACKUP LOG 資料庫名 WITH NO_LOG

收縮資料庫文件(如果不壓縮 資料庫的文件不會減小

企業管理器 右鍵你要壓縮的資料庫 所有任務 收縮資料庫 收縮文件

選擇日誌文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了

選擇數據文件 在收縮方式里選擇收縮至XXM 這里會給出一個允許收縮到的最小M數 直接輸入這個數 確定就可以了

也可以用SQL語句來完成

收縮資料庫

DBCC SHRINKDATABASE(客戶資料)

收縮指定數據文件 是文件號 可以通過這個語句查詢到:

select * from sysfiles

DBCC SHRINKFILE( )

為了最大化的縮小日誌文件(如果是sql 這步只能在查詢分析器中進行)

a 分離資料庫:

企業管理器 伺服器 資料庫 右鍵 分離資料庫

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

c 附加資料庫:

企業管理器 伺服器 資料庫 右鍵 附加資料庫

此法將生成新的LOG 大小隻有 多K

或用代碼

下面的示例分離 pubs 然後將 pubs 中的一個文件附加到當前伺服器

a 分離

EXEC sp_detach_db @dbname = pubs

b 刪除日誌文件

c 再附加

EXEC sp_attach_single_file_db @dbname = pubs

@physname = c:/Program Files/Microsoft

SQL Server/MSSQL/Data/pubs mdf

為了以後能自動收縮 做如下設置

企業管理器 伺服器 右鍵資料庫 屬性 選項 選擇 自動收縮

SQL語句設置方式:

EXEC sp_dboption 資料庫名

autoshrink TRUE

如果想以後不讓它日誌增長得太大

企業管理器 伺服器 右鍵資料庫 屬性 事務日誌

將文件增長限制為xM(x是你允許的最大數據文件大小)

SQL語句的設置方式:

lishixin/Article/program/SQLServer/201311/22266

⑽ MS SQL2000資料庫太大了 如何壓縮

具體方法有3種。
方法一:
第一步:
backup log database_name with no_log
或者 backup log database_name with truncate_only
-- no_log和truncate_only是在這里是同義的,隨便執行哪一句都可以。
第二步:
1.收縮特定資料庫的所有數據和日誌文件,執行:
dbcc shrinkdatabase (database_name,[,target_percent])
-- database_name是要收縮的資料庫名稱;target_percent是資料庫收縮後的資料庫文件中所要的剩餘可用空間百分比。
2.收縮一次一個特定資料庫中的數據或日誌文件,執行
dbcc shrinkfile(file_id,[,target_size])
-- file_id是要收縮的文件的標識 (ID) 號,若要獲得文件 ID,請使用 FILE_ID 函數或在當前資料庫中搜索 sysfiles;target_size是用兆位元組表示的所要的文件大小(用整數表示)。如果沒有指定,dbcc shrinkfile 將文件大小減少到默認文件大小。兩個dbcc都可以帶上參數notruncate或truncateonly,具體意思查看聯機幫助.

方法二:
第一步:
先備份整個資料庫以備不測 。
第二步:
備份結束後,在Query Analyzer中執行如下的語句:
exec sp_detach_db yourDBName,true
--卸除這個DB在MSSQL中的注冊信息
第三步:
到日誌的物理文件所在的目錄中去刪除該日誌文件或者將該日誌文件移出該目錄
第四步:
在Query Analyzer中執行如下的語句:
exec sp_attach_single_file_db yourDBName,'
d:\mssql\data\yourDBName_data.mdf '
--以單文件的方式注冊該DB,如果成功則MSSQL將自動為這個DB生成一個500K的日誌文件。

方法三:
1. 進入企業管理器,選中資料庫,比如demo
2. 所有任務->分離資料庫
3. 到資料庫文件的存放目錄,將MuOnline_log.LDF文件刪除,以防萬一,你可以拷出去
4. 企業管理器->附加資料庫,選muonline,這個時候你會看見日誌文件這項是一個叉,不要緊,繼續,此時資料庫就會提示你該資料庫無日誌是否創建一個新的,確定就是了。
5. 記得資料庫重新附加後用戶要重新設置一下。
如果以後,不想要它變大:
SQL2000下使用:
在資料庫上點右鍵->屬性->選項->故障恢復-模型-選擇-簡單模型。
或用SQL語句:
alter database 資料庫名 set recovery simple

熱點內容
如何下載奧特曼高級化3安卓版 發布:2025-05-14 07:47:31 瀏覽:344
qml文件修改後編譯未生效 發布:2025-05-14 07:31:00 瀏覽:330
內到內演算法 發布:2025-05-14 07:29:11 瀏覽:33
文件夾名字不顯示 發布:2025-05-14 07:27:47 瀏覽:774
oracle的資料庫驅動jar 發布:2025-05-14 07:23:20 瀏覽:555
我的世界電腦版伺服器手機版能進嗎 發布:2025-05-14 07:22:01 瀏覽:678
達內培訓php多少錢 發布:2025-05-14 07:19:10 瀏覽:26
python位元組轉字元串 發布:2025-05-14 07:06:35 瀏覽:421
subplotpython 發布:2025-05-14 06:53:51 瀏覽:661
豎屏大屏導航工廠密碼一般是多少 發布:2025-05-14 06:49:29 瀏覽:806