近來發現資料庫過大,空間不足,因此打算將資料庫的資料進行全面的清理,但表非常多,一張一張的清空,實在麻煩,因此就想利用sql語句一次清空所有資料.找到了三種方法進行清空.使用的資料庫為ms sql server.
1.搜尋出所有表名,構造為一條sql語句
declare
@trun_name
varchar
(8000
)set
@trun_name=''
select
@trun_name
=@trun_name+'
truncate table '+
[name]+
''from
sysobjects
where
xtype='
u'andstatus
>
0exec
(@trun_name)
該方法適合表不是非常多的情況,否則表數量過多,超過字串的長度,不能進行完全清理.
2.利用游標清理所有表
declare
@trun_name
varchar
(550
)declare
name_cursor
cursor
forselect
'truncate table '+
name
from
sysobjects
where
xtype='
u'andstatus
>
0open
name_cursor
fetch
next
from
name_cursor
into
@trun_name
while
@@fetch_status=0
begin
exec
(@trun_name
'truncated table '+
@trun_name
fetch
next
from
name_cursor
into
@trun_name
endclose
name_cursor
deallocate
name_cursor
這是我自己構造的,可以做為儲存過程呼叫, 能夠一次清空所有表的資料,並且還可以進行有選擇的清空表.
3.利用微軟未公開的儲存過程
exec
sp_msforeachtable "
truncate
table?"
--刪除當前資料庫所有表中的資料
sp_msforeachtable @command1='delete from ?'
sp_msforeachtable @command1 = "truncate table ?"
該方法可以一次清空所有表,但不能加過濾條件.
清空資料庫中所有表資料的方法
其實刪除資料庫中資料的方法並不複雜,為什麼我還要多此一舉呢,一是我這裡介紹的是刪除資料庫的所有資料,因為資料之間可能形成相互約束關係,刪除操作可能陷入死迴圈,二是這裡使用了微軟未正式公開的sp msforeachtable儲存過程。也許很多讀者朋友都經歷過這樣的事情 要在開發資料庫基礎上清理乙個空庫...
清空資料庫中所有表資料的方法
其實刪除資料庫中資料的方法並不複雜,為什麼我還要多此一舉呢,一是我這裡介紹的是刪除資料庫的所有資料,因為資料之間可能形成相互約束關係,刪除操作可能陷入死迴圈,二是這裡使用了微軟未正式公開的sp msforeachtable儲存過程。也許很多讀者朋友都經歷過這樣的事情 要在開發資料庫基礎上清理乙個空庫...
清空收縮資料庫日誌檔案的方法
操作乙個資料庫時,程式提示資料日誌過大 開啟資料檔案存放的目錄檢查,發現ldf檔案已經達到了2g多。清除的方法是我在網上看到的,試了一下,達到要的效果,完成之後ldf檔案只有100m不到。操作之前請做好備份。我的操作是在查詢分析器中完成,操作方法如下 1 dump transaction datab...