摘要 您好,1
㈡ 今天用SQL SERVER修改了批量21W條數據,突然發現自己改錯了,怎樣返回上一步
前提條件
--將資料庫的恢復模式(Recoverymode)設置為「完整(Full)」
--此操作可以在SQLServerManagementStudio中,選擇資料庫,滑鼠右鍵,屬性後,在選項標簽中進行設置。
USE[master]
GO
ALTERDATABASE[test]SETRECOVERYFULLWITHNO_WAIT
GO
--完整備份資料庫
backupdatabasetesttodisk='e: est_20130704.dat'
GO
已為資料庫'test',文件'Test'(位於文件1上)處理了376頁。
已為資料庫'test',文件'Test_log'(位於文件1上)處理了3頁。
BACKUPDATABASE成功處理了379頁,花費1.151秒(2.571MB/秒)。
測試數據.
USE[test]
GO
--創建測試表
CREATETABLEtest_br_table(
IDint,
VALVARCHAR(10),
PRIMARYKEY(ID)
);
GO
INSERTINTOtest_br_tableVALUES(1,'TEST1');
INSERTINTOtest_br_tableVALUES(2,'TEST2');
INSERTINTOtest_br_tableVALUES(3,'TEST3');
GO
SELECTGETDATE()
GO
-----------------------
2013-07-0416:44:12.393
(1行受影響)
--假設誤操作,刪除所有的數據了.
DELETEFROMtest_br_table
GO
(3行受影響)恢復
USE[master]
GO
--步驟1.備份當前資料庫的事務日誌:
BACKUPLOG[Test]TOdisk=N'e: est_log'WITHNORECOVERY
GO
已為資料庫'Test',文件'Test_log'(位於文件1上)處理了9頁。
BACKUPLOG成功處理了9頁,花費0.046秒(1.486MB/秒)。
--步驟2.恢復一個誤刪除之前的完全備份:
RESTOREDATABASE[Test]FROMDISK=N'e: est_20130704.dat'WITHNORECOVERY,REPLACE
GO
已為資料庫'Test',文件'Test'(位於文件1上)處理了376頁。
已為資料庫'Test',文件'Test_log'(位於文件1上)處理了3頁。
RESTOREDATABASE成功處理了379頁,花費0.828秒(3.574MB/秒)。
--步驟3.將資料庫恢復至誤刪除之前的時間點:
RESTORELOG[Test]FROMDISK=N'e: est_log'WITHSTOPAT=N'2013-07-0416:44:12.393',RECOVERY
GO
已為資料庫'Test',文件'Test'(位於文件1上)處理了0頁。
已為資料庫'Test',文件'Test_log'(位於文件1上)處理了9頁。
RESTORELOG成功處理了9頁,花費0.013秒(5.258MB/秒)。
核對數據.
use[Test]
GO
SELECT*FROMtest_br_table
GO
IDVAL
---------------------
1TEST1
2TEST2
3TEST3
(3行受影響)
㈢ sql sever 剛一不小心按下了update 所有表都改了這么辦
如果你的資料庫開啟了日誌功能的話 可以使用sqlexplorer進行恢復。
另外看一下這個有沒有幫助
http://www.cnblogs.com//archive/2011/10/15/sql_server_recover_deleted_records.html
㈣ sql資料庫誤改怎樣恢復
1, 如果你有比較新的備份文件,可以將備份恢復到另外一台機器上,然後將對應表導入到當前庫;
2,如果你的日誌文件還沒有被覆蓋,將日誌文件出去,先備份一下,找個讀取sqlserver日誌的工具,從日誌文件中逐條記錄恢復。
㈤ 在sql中執行錯了語句,導致數據丟失,如何恢復急,在線等...!
把備份資料庫恢復到另外一個資料庫,再利用舊資料庫把user_info的資料恢復.之後再做你要做的修改.
不要跟我說你沒有資料庫備份哦.
用日誌恢復也需要備份文件的.而且,日誌主要提供給系統使用,操作員並不好使用啊.
㈥ 為什麼我執行代碼後會把資料庫里的所有數據都修改了
沒有加條件 後面加個where 主鍵=多少
例如
String sql="update student set name='"+stu.getName()+"',age="+stu.getAge()+",address='"+stu.getAddress()+"' where id=1";
㈦ SQL問題:本想執行update修改一條數據的,結果忘記寫where條件了。結果那個表的那一列都改了。能改回來么
修改之前沒進行備份數據? 可憐的娃。。。
方法一:
數據還原到指定時間點的處理示例:
--創建測試資料庫
CREATE DATABASE Db
GO
--對資料庫進行備份
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 @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --獲取比表被刪除的時間略早的時間
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
GO
--查詢一下,看錶是否恢復
SELECT * FROM Db.dbo.TB_test
/*--結果:
ID
-----------
(所影響的行數為 0 行)
--*/
--測試成功
GO
--最後刪除我們做的測試環境
DROP DATABASE Db
DROP TABLE #
方法二:
用日誌工具Log Explorer
步驟:
1、查看日誌
a、打開log explorer,選擇菜單File--> attach log file
b、在Log File Selection窗口中,填寫連接到要恢復數據的資料庫伺服器機器名、資料庫登錄ID及密碼,然後點擊 "Connect "按鈕。
c、若連接成功,則窗口左邊樹將顯示命令菜單,這時我們點擊Browser下的View Log命令,此時窗口右邊則出現該資料庫的Log。
2、恢復資料庫
這時您只要選擇您要恢復對事件點,右鍵點擊選擇 "undo transation "命令,保存T-SQL代碼,然後在查詢分析器中執行該T-SQL代碼
㈧ 我想更新資料庫的一個欄位,結果全部改了,想問一下,sql語句咋寫啊
WHER QAID=QAID 就是所有的都改
你別把變數名取的和列名一樣啊
㈨ 怎樣恢復SQL腳本造成的資料庫更改
那你就看添加了那些表那些數據把他們刪掉就可以了
㈩ SQL,資料庫批量修改。這么寫錯在哪兒了
哪也沒錯,用in的寫法本身效率就低
你在ac里執行的快,是因為數據沒導全吧?
可以用下邊的寫法試驗一下
update A set A1= (select 1000 from B where a.id=b.id and b.id<>0)