當前位置:首頁 » 編程語言 » sqlserver2008自動收縮
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver2008自動收縮

發布時間: 2022-03-06 18:45:15

sqlserver2008 收縮資料庫耗時

這個看伺服器性能,我做過200G的,壓縮大概在3-4小時左右。

你這個,個人感覺應該在1-2個小時左右!

⑵ sql server 2008 日誌收縮

1天增加7G,不算不正常。日誌有完全日誌和簡單日誌的分別,在資料庫屬性中設置為簡單日誌,可以降低增長。
自動收縮日誌可以,代碼如下:
backup log tempdb with NO_LOG
dbcc shrinkdatabase (tempdb,10)

⑶ sql server怎麼收縮日誌

一、確認恢復模式。以下是使用 SQL Server Management Studio 檢查資料庫的恢復模式。

⑷ Sql server2008的ldf文件過大怎麼收縮

很多人發現直接下指令,SQL 2008收縮不來。

1、資料庫選項中,設定對應的資料庫的恢復模式為簡單。

2、下達指令,收縮資料庫,即可。(對資料庫點右鍵,點任務,點收縮資料庫之類的,然後是向導,一步一步做即可)




提示,簡單模式非常不安全,請在收縮完以後第1時間做以下操作:

1、設定資料庫恢復模式為完整模式。

2、做一次完整資料庫備份。

⑸ 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遇到相關錯誤時,如死鎖,那麼也會產生一個內部回滾,這些都需要用到事務日誌文件。
為什麼要收縮事務日誌?

收縮日誌的原因有很多種,有些則是考慮空間不足,有些則是應用程序限制導致的,一般情況下,是不建議對事務日誌進行其他改變的,如需要控制事務日誌的大小,則可以通過安排事務日誌備份來解決。如果確定事務日誌包含將不再使用的未使用空間,則可以通過減少事務日誌的大小,以便回收過多空間。但這種情況對於一個DBA來講,應該要盡量避免。

僅當資料庫處於聯機狀態,而且至少一個虛擬日誌文件可用時,收縮才會發生。在某些情況下,直到下一個日誌截斷後,才能收縮日誌。

事務日誌收縮的原理:
每個事務日誌由多個虛擬日誌文件組成(virtual log file).虛擬日誌文件沒有固定的大小,也沒有固定的個數。在創建事務日誌文件或者擴展事務日誌文件時,SQL SERVER便會自動創建合適大小的虛擬日誌文件,DBA無法控制虛擬日誌文件的大小和個數。在擴展日誌文件後,虛擬文件的大小是現有日誌大小和新文件增量大小之和。因此,如果在創建資料庫時,對資料庫指定了比較小的初始大小,又指定了比較小的日誌增長量,隨著事務日誌的自動擴展,虛擬日誌文件個數會越來越多,從而影響了資料庫性能。因此,在創建資料庫時,盡量指定比較合適的初始事務日誌大小,同時指定合理的事務日誌增長量,這點可以參考數據文件的標准。如果大於10G或者更大的話,則指定固定的增長量,如果比較小,則指定按百分比的增長量來進行。

詳情參考
http://hi..com/lxiangshanyu/item/7057ce04081efae9fe240d64

⑹ sql server 2008 資料庫收縮 可以強行終止嗎

最好不要終止,以為收縮過程中會對資料庫表進行壓縮,意外中斷很有可能導致資料庫文件損壞

⑺ SQL server2008 臨時表tempdb如何自動釋放存儲空間

sql server中如何創建,使用,釋放臨時表
drop table #Tmp --刪除臨時表#Tmpcreate table #Tmp --創建臨時表#Tmp( ID int IDENTITY (1,1) not null, --創建列ID,並且每次新增一條記錄就會加1 WokNo varchar(50), primary key (ID) --定義ID為臨時表#Tmp的主鍵 );Select * from #Tmp --查詢臨時表的數據truncate table #Tmp --清空臨時表的所有數據和約束
相關例子:
Declare @Wokno Varchar(500) --用來記錄職工號Declare @Str NVarchar(4000) --用來存放查詢語句Declare @Count int --求出總記錄數 Declare @i intSet @i = 0 Select @Count = Count(Distinct(Wokno)) from #TmpWhile @i < @Count Begin Set @Str = 'Select top 1 @Wokno = WokNo from #Tmp Where id not in (Select top ' + Str(@i) + 'id from #Tmp)' Exec Sp_ExecuteSql @Str,N'@WokNo Varchar(500) OutPut',@WokNo Output Select @WokNo,@i --一行一行把職工號顯示出來 Set @i = @i + 1 End臨時表可以創建本地和全局臨時表。本地臨時表僅在當前會話中可見;全局臨時表在所有會話中都可見。
本地臨時表的名稱前面有一個編號符 (#table_name),而全局臨時表的名稱前面有兩個編號符 (##table_name)。
SQL 語句使用 CREATE TABLE 語句中為 table_name 指定的名稱引用臨時表:
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)INSERT INTO #MyTempTable VALUES (1)
如果本地臨時表由存儲過程創建或由多個用戶同時執行的應用程序創建,則 SQL Server 必須能夠區分由不同用戶創建的表。為此,SQL Server 在內部為每個本地臨時表的表名追加一個數字後綴。存儲在 tempdb 資料庫的 sysobjects 表中的臨時表,其全名由 CREATE TABLE 語句中指定的表名和系統生成的數字後綴組成。為了允許追加後綴,為本地臨時表指定的表名 table_name 不能超過 116 個字元。
除非使用 DROP TABLE 語句顯式除去臨時表,否則臨時表將在退出其作用域時由系統自動除去:
當存儲過程完成時,將自動除去在存儲過程中創建的本地臨時表。由創建表的存儲過程執行的所有嵌套存儲過程都可以引用此表。但調用創建此表的存儲過程的進程無法引用此表。
所有其它本地臨時表在當前會話結束時自動除去。
全局臨時表在創建此表的會話結束且其它任務停止對其引用時自動除去。任務與表之間的關聯只在單個 Transact-SQL 語句的生存周期內保持。換言之,當創建全局臨時表的會話結束時,最後一條引用此表的 Transact-SQL 語句完成後,將自動除去此表。 在存儲過程或觸發器中創建的本地臨時表與在調用存儲過程或觸發器之前創建的同名臨時表不同。如果查詢引用臨時表,而同時有兩個同名的臨時表,則不定義針對哪個表解析該查詢。嵌套存儲過程同樣可以創建與調用它的存儲過程所創建的臨時表同名的臨時表。嵌套存儲過程中對表名的所有引用都被解釋為是針對該嵌套過程所創建的表,例如:
CREATE PROCEDURE Test2ASCREATE TABLE #t(x INT PRIMARY KEY)INSERT INTO #t VALUES (2)SELECT Test2Col = x FROM #tGOCREATE PROCEDURE Test1ASCREATE TABLE #t(x INT PRIMARY KEY)INSERT INTO #t VALUES (1)SELECT Test1Col = x FROM #tEXEC Test2GOCREATE TABLE #t(x INT PRIMARY KEY)INSERT INTO #t VALUES (99)GOEXEC Test1GO
下面是結果集:
(1 row(s) affected)
Test1Col ----------- 1
(1 row(s) affected)
Test2Col ----------- 2
當創建本地或全局臨時表時,CREATE TABLE 語法支持除 FOREIGN KEY 約束以外的其它所有約束定義。如果在臨時表中指定 FOREIGN KEY 約束,該語句將返回警告信息,指出此約束已被忽略,表仍會創建,但不具有 FOREIGN KEY 約束。在 FOREIGN KEY 約束中不能引用臨時表。
考慮使用表變數而不使用臨時表。當需要在臨時表上顯式地創建索引時,或多個存儲過程或函數需要使用表值時,臨時表很有用。通常,表變數提供更有效的查詢處理。

⑻ 在sql server2008中怎樣設置自動縮進

--2.滑鼠右擊【SQL Server 代理】,選擇【啟動(S)】,如已啟動,可以省略此步驟; --3.展開【SQL Server 代理】列表,右擊【作業】--【新建作業】; --3.1 在【常規】選項卡中:

⑼ sql server2008的ldf文件過大怎麼收縮

在SQL Server中經常遇到事務日誌變大的情況,除了將資料庫設置為「自動收縮」外,還可以使用下面的SQL命令進行快速清除資料庫中的事務日誌,命令如下:
- 第一步:清空日誌

DUMP TRANSACTION
databasename
WITH
NO_LOG

-- 第二步:截斷事務日誌

BACKUP LOG
databasename
WITH
NO_LOG

-- 第三步:收縮資料庫

DBCC SHRINKDATABASE(databasename)