網上收集的一篇文章,忘記是**的了.
做個記號.
--建立測試資料庫
create
database
dbgo
--對資料庫進行備份
backup
database db to
disk='
c:\db.bak
'with
format
go--
建立測試表
create
table db.dbo.tb_test(id int)--
延時1秒鐘,再進行後面的操作(這是由於sql server的時間精度最大為百分之三秒,不延時的話,可能會導致還原到時間點的操作失敗)
waitfor delay '
00:00:01'go
--假設我們現在誤操作刪除了 db.dbo.tb_test 這個表
drop
table
db.dbo.tb_test
--儲存刪除表的時間
select dt=
getdate() into#go
--在刪除操作後,發現不應該刪除表 db.dbo.tb_test
--下面演示了如何恢復這個誤刪除的表 db.dbo.tb_test
--首先,備份事務日誌(使用事務日誌才能還原到指定的時間點)
backup
log db to
disk='
c:\db_log.bak
'with
format
go--
接下來,我們要先還原完全備份(還原日誌必須在還原完全備份的基礎上進行)
restore
database db from
disk='
c:\db.bak
'with
replace
,norecovery
go--
將事務日誌還原到刪除操作前(這裡的時間對應上面的刪除時間,並比刪除時間略早
declare
@dtdatetime
select
@dt=
dateadd(ms,-
20,dt) from#--
獲取比表被刪除的時間略早的時間
restore
log db from
disk='
c:\db_log.bak
'with recovery,stopat=
@dtgo
--查詢一下,看表是否恢復
select
*from
db.dbo.tb_test
/*--結果:
id-----------
(所影響的行數為 0 行)
--*/
--測試成功
go--
最後刪除我們做的測試環境
drop
database
dbdrop
table #
SQL 2008根據條件拆分列
在為人事局做報表過程中,遇到乙個棘手的問題,客戶要求把資料庫中的一列資料根據條件分成多列。比如 資料庫中有省份這麼一列資料 客戶要求根據省份分類,河北省一列 北京市一列 天津市一列,剩下的為其他,目標效果如下 手工編寫的sql語句version1.0版 select 河北 parsename pro...
sql2008定期清理映象日誌
create proc dbo cleantranlog as begin declare num tinyint 執行次數 declare backlogname varchar 100 備份日誌檔名稱 declare backlogpath varchar 100 備份日誌檔案的路徑 set n...
清空sql2008 日誌
alter database dnname set recovery 簡單模式 go右鍵 任務 收縮 檔案 確定 下來資料庫的日誌只保留了1m alter database dnname set recovery full 還原為完全模式 go優點 此清除日誌所執行消耗的時間短,90gb的日誌在分鐘...