當前位置:首頁 » 編程語言 » 怎麼清理sql臨時空間
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

怎麼清理sql臨時空間

發布時間: 2022-06-19 18:16:24

sql資料庫空間不足怎麼辦

一、用戶資料庫搬家
操作方法有以下兩種
方法1:在企業管理器中進行
(1)在企業管理器中選定要搬家的資料庫名,在其上單擊滑鼠右鍵,出現如圖1所示對話框。
(2)選中「所有任務」,在其子菜單中單擊「分離資料庫」。
(3)將該資料庫的數據文件和日誌文件從舊的位置(如D:\MSSQL\Data)拷貝到新的位置(如E:\SQLDataNew)。
(4)再在企業管理器中選中「資料庫」文件夾,在其上單擊滑鼠右鍵,在出現的對話框中選中「所有任務」,在其子菜單中單擊「附加資料庫」。
(5)在出現的「附加資料庫」對話框中,選擇資料庫的兩個文件的新位置。
方法2:用SQL系統存儲過程sp_detach_db/sp_attach_db實現
(1)使用下面語句分離資料庫:
USE master
GO
EXEC sp_detach_db 'mydb'
GO
(2)將該資料庫的數據文件和日誌文件從舊的位置拷貝到新的位置。
(3)使用下面語句重新附加資料庫:
USE master
GO
EXEC sp_attach_db
'mydb', 'E:\SQLDataNew\mydbdata.mdf', 'E:\SQLDataNew\mydblog.ldf''
GO
二、系統資料庫搬家
1.master資料庫搬家
(1)由於SQL Server每次啟動的時候都需要讀取master資料庫,因此必須在企業管理器中改變SQL Server啟動參數中master數據文件和日誌文件的路徑。
在 SQL Server屬性的「常規」選項卡下面有一個叫做「啟動參數」的按鈕,單擊後可以看到所示的界面。
其中,-d用來指定master資料庫文件的路徑,而–l用來指定master資料庫日誌文件的路徑。
刪除舊的master資料庫文件和日誌文件的路徑,添加新的master數據文件和日誌文件所在的路徑,如:
-dE:\ SQLDataNew \master.mdf
-lE:\ SQLDataNew \mastlog.ldf
(2)停止SQL Server服務,將master.mdf文件和mastlog.ldf文件拷貝到新的位置,如E:\ SQLDataNew文件夾中。
(3)重新啟動服務即可。
小技巧:如果在「啟動參數」添加的master資料庫文件和日誌文件的路徑或文件名有誤,就會造成SQL Server啟動不起來。而此時想改正錯誤又因SQL Server啟動不了而重設不了「啟動參數」。其實這兩個文件路徑和文件名是放置在注冊表HKEY_LOCAL_MACHINE\SOFWARE\Microsoft\Miccrosoft SQL Server\你安裝SQL伺服器的名\MSSQLServer\Parrmeters下的參數SQLArg1和SQLArg2中,修改這兩個參數的值即可。
2. msdb資料庫和model資料庫搬家
(1)對於msdb資料庫和model資料庫,我們不能在企業管理器中實現分離和附加,只能用sp_detach_db和sp_attach_db存儲過程來分離和附加這兩個資料庫。
其中,對於msdb資料庫,還應確保SQL Server代理當前沒有運行,否則sp_detach_db存儲過程將運行失敗,並返回如下消息:
「無法除去資料庫 'msdb' ,因為它當前正在使用。」
(2)調出如圖4所示的「啟動參數」對話框,添加新參數-T3608。這樣,啟動SQL Server,它就不會恢復除master之外的任何資料庫。
(3)重新啟動SQL Server,再用下面命令分離msdb或者model資料庫:
EXEC sp_detach_db 'msdb'
GO
(4)將數據文件和日誌文件移到新的位置,然後再用下面命令重新附加msdb資料庫或者model資料庫:
USE master
GO
EXEC sp_attach_db
'msdb', 『E:\SQLDataNew\msdbdata.mdf', ' E:\SQLDataNew\msdblog.ldf '
GO
(5)在企業管理器中,從「啟動參數」框中刪除-T3608跟蹤標記,再停止並重新啟動SQL Server。
3. tempdb資料庫搬家
對於tempdb資料庫,則可以直接使用ALTER DATABASE語句來為數據文件和日誌文件指定新的存放位置,如下所示:
USE master
GO
ALTER DATABASE tempdb MODIF
Y FILE (NAME=tempdev, FILENAME ='E:\SQLDataNew \tempdb.mdf')
GO
ALTER DATABASE tempdb MODIF
Y FILE(NAME=templog, FILENAME=
' E:\SQLDataNew \templog.ldf')
GO
至此,SQL Server 中資料庫全部搬家完成。

㈡ 如何清除SQL資料庫中的數據

  1. 單擊開始---->所有程序---->Microsoft SQL Server 2014,選擇SQL Server 2014 Management Studio選項,打開軟體。

(2)怎麼清理sql臨時空間擴展閱讀:

SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。在使用它時,只需要發出「做什麼」的命令,「怎麼做」是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支持SQL。

SQL資料庫的數據體系結構基本上是三級結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為「基本表」(base table);存儲模式(內模式)稱為「存儲文件」(stored file);子模式(外模式)稱為「視圖」(view);元組稱為「行」(row);屬性稱為「列」(column)。名稱對稱如^00100009a^:

SQL包括了所有對資料庫的操作,主要是由4個部分組成:

  1. 數據定義:這一部分又稱為「SQL DDL」,定義資料庫的邏輯結構,包括定義資料庫、基本表、視圖和索引4部分。

  2. 數據操縱:這一部分又稱為「SQL DML」,其中包括數據查詢和數據更新兩大類操作,其中數據更新又包括插入、刪除和更新三種操作。

  3. 數據控制:對用戶訪問數據的控制有基本表和視圖的授權、完整性規則的描述,事務控制語句等。

  4. 嵌入式SQL語言的使用規定:規定SQL語句在宿主語言的程序中使用的規則。


參考資料:IT專家網-微軟SQL

㈢ rds for sql server 臨時空間文件怎麼刪除

MS SQLSERVER 自帶收縮功能
可以試下
表佔用空間大不一定能收縮多少 畢竟有數據在那,如果這表經常有刪除動作的話 收縮還是有用的,

㈣ sqlyog 資料庫空間不夠,怎麼清除tmp臨時空間

清空/tmp目錄,或者修改my.cnf中的tmpdir參數,指向具有足夠空間目錄。

㈤ sql資料庫滿了怎麼清理

-- 清空日誌
--壓縮日誌及資料庫文件大小

/*--特別注意
請按步驟進行,未進行前面的步驟,請不要做後面的步驟
否則可能損壞你的資料庫.
--*/
select*fromsysfiles
--1.清空日誌
DUMPTRANSACTIONusernameWITHNO_LOG

--2.截斷事務日誌:
BACKUPLOGusernameWITHNO_LOG

--3.收縮資料庫文件(如果不壓縮,資料庫的文件不會減小
-- 企業管理器--右鍵你要壓縮的資料庫--所有任務--收縮資料庫--收縮文件
--選擇日誌文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了
--選擇數據文件--在收縮方式里選擇收縮至XXM,這里會給出一個允許收縮到的最小M數,直接輸入這個數,確定就可以了

-- 也可以用SQL語句來完成
--收縮資料庫
DBCCSHRINKDATABASE(username)

--收縮指定數據文件,1是文件號,可以通過這個語句查詢到:select*fromsysfiles

DBCCSHRINKFILE(2)

--4.為了最大化的縮小日誌文件(如果是sql7.0,這步只能在查詢分析器中進行)
-- a.分離資料庫:
-- 企業管理器--伺服器--資料庫--右鍵--分離資料庫

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

-- c.附加資料庫:
-- 企業管理器--伺服器--資料庫--右鍵--附加資料庫

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

-- 或用代碼:
-- 下面的示例分離username,然後將username中的一個文件附加到當前伺服器。

execsp_dboptionusername,'singleuser',true
a.分離
EXECsp_detach_db@dbname='username'

b.刪除日誌文件
execmaster..xp_cmdshell'delD:\ProgramFiles\SQL\database\username_LOG.ldf'

c.再附加
EXECsp_attach_single_file_db@dbname='username',
@physname='D:\ProgramFiles\SQL\database\username_Data.MDF'

--5.為了以後能自動收縮,做如下設置:
-- 企業管理器--伺服器--右鍵資料庫--屬性--選項--選擇"自動收縮"

--SQL語句設置方式:
EXECsp_dboption'資料庫名','autoshrink','TRUE'

--6.如果想以後不讓它日誌增長得太大
-- 企業管理器--伺服器--右鍵資料庫--屬性--事務日誌
--將文件增長限制為xM(x是你允許的最大數據文件大小)

--SQL語句的設置方式:
alterdatabase資料庫名modifyfile(name=邏輯文件名,maxsize=20)

㈥ 如何清理sql server 2000的臨時表空間

f object_id('tempdb..#tempTable') is not null Begin
drop table #tempTable
End

㈦ sql資料庫伺服器,內存佔用過大怎麼辦

SqlServer系統內存管理在沒有配置內存最大值,很多時候我們會發現運行SqlServer的系統內存往往居高不下。這是由於他對於內存使用的策略是有多少閑置的內存就佔用多少,直到內存使用慮達到系統峰值時(預留內存根據系統默認預留使用為准,至少4M),才會清除一些緩存釋放少量的內存為新的緩存騰出空間。

這些內存一般都是SqlServer運行時候用作緩存的,例如你運行一個select語句,執行個存儲過程,調用函數;

1.數據緩存:執行個查詢語句,SqlServer會將相關的數據頁(SqlServer操作的數據都是以頁為單位的)載入到內存中來,下一次如果再次請求此頁的數據的時候,就無需讀取磁碟了,大大提高了速度。

2.執行命令緩存:在執行存儲過程,自定函數時,SqlServer需要先二進制編譯再運行,編譯後的結果也會緩存起來,再次調用時就無需再次編譯。

在我們執行完相應的查詢語句,或存儲過程,如果我們不在需要這些緩存,我可以將它清除,DBCC管理命令緩存清除如下:

--清除存儲過程緩存
DBCCFREEPROCCACHE
--註:方便記住關鍵字FREEPROCCACHE可以拆解成FREE(割捨,清除)PROC(存儲過程關鍵字簡寫),CACHE(緩存)
--清除會話緩存
DBCCFREESESSIONCACHE
--註:FREE(割捨,清除)SESSION(會話)CACHE(緩存)
--清除系統緩存
DBCCFREESYSTEMCACHE('All')
--註:FREESYSTEMCACHE
--清除所有緩存
DBCCDROPCLEANBUFFERS
--註:DROPCLEANBUFFERS

㈧ mysql 臨時空間不足怎麼辦

以MySQL 8.0 來說,通過查看 8.0 的官方文檔得知,8.0 的臨時表空間分為會話臨時表空間和全局臨時表空間,會話臨時表空間存儲用戶創建的臨時表和當 InnoDB 配置為磁碟內部臨時表的存儲引擎時由優化器創建的內部臨時表,當會話斷開連接時,其臨時表空間將被截斷並釋放回池中;也就是說,在 8.0 中有一個專門的會話臨時表空間,當會話被殺掉後,可以回收磁碟空間;而原來的 ibtmp1 是現在的全局臨時表空間,存放的是對用戶創建的臨時表進行更改的回滾段,在 5.7 中 ibtmp1 存放的是用戶創建的臨時表和磁碟內部臨時表;

也就是在 8.0 和 5.7 中 ibtmp1 的用途發生了變化,5.7 版本臨時表的數據存放在 ibtmp1 中,在 8.0 版本中臨時表的數據存放在會話臨時表空間,如果臨時表發生更改,更改的 undo 數據存放在 ibtmp1 中;

總結:在 mysql5.7 時,殺掉會話,臨時表會釋放,但是僅僅是在 ibtmp 文件里標記一下,空間是不會釋放回操作系統的。如果要釋放空間,需要重啟資料庫;在 mysql8.0 中可以通過殺掉會話來釋放臨時表空間。