Cách khôi phục dữ liệu trước thời điểm xóa nhầm sqlserver 2008

Xem: 392    Tải: 0   Thảo luận: 0   Mục: Php&mySql   Lĩnh vực: Khác

9 điểm   ( 2 đánh giá ) File đã được kiểm thử


Hướng dẫn các bạn khôi phục dữ liệu lại trước thời điểm khi các bạn xóa nhầm một hay nhiều bảng nào đó trong cơ sở dữ liệu.

Làm việc với database là công việc thường xuyên đối với coder, nhưng một này nào đó, các bạn lỡ tay viết câu truy vấn delete thiếu điều kiện hay nhầm bảng table, lúc đó, dữ liệu mất sạch.

Dữ liệu hiện tại thì chỉ có backup ngày hôm qua, Bây giờ, các người sử dụng phần mềm bạn chắc chắn sẽ không truy cập được. Bây giờ, chắc chắn bạn đang rất lo lắng, chẳng biết xử lý như thế nào. Sếp mà biết được thì xong, chuẩn bị nhận lương rồi ra về :) hii.

Mình cũng đã từng trải qua, cái cảm giác này rồi, bị thằng bạn càm ràm cả ngày, nào là chầu nhậu, chầu nước... kính thưa các thứ. :)))

Bây giờ, mình sẽ làm một ví dụ để các bạn dễ hình dung.

- Đầu tiên mình sẽ tạo database tên SINHVIEN, và bảng table tbl_sinhvien(masv, tensv).

USE master
GO
IF DB_ID('SINHVIEN') IS NOT NULL DROP DATABASE SINHVIEN
GO
CREATE DATABASE SINHVIEN
GO
USE SINHVIEN
GO
CREATE TABLE dbo.tbl_sinhvien(masv INT IDENTITY, tensv NVARCHAR(50) )
GO
INSERT INTO dbo.tbl_sinhvien(tensv)
SELECT N'Nguyễn Thảo' UNION ALL
SELECT N'Cái Trí Minh' UNION ALL
SELECT N'Trần Đình Hoàng' UNION ALL
SELECT N'Võ Sơn Băng'

- Bây giờ, mình sẽ tiến hành backup toàn bộ database SINHVIEN.

BACKUP DATABASE SINHVIEN TO DISK='D:SINHVIEN.BAK' WITH INIT

- Mình tiếp tục tiến hành thêm dữ liệu mới, sau khi backup .

INSERT INTO TBL_SINHVIEN(TENSV) VALUES(N'Trần Đình Thành') 
GO
INSERT INTO TBL_SINHVIEN(TENSV) VALUES(N'Đoàn Chính Thuần') 
GO
INSERT INTO TBL_SINHVIEN(TENSV) VALUES(N'Trương Phi') 

- Sau đó, do sơ xuất mình chạy nhầm câu lệnh sql delete

DELETE FROM TBL_SINHVIEN

- Đến đây, là dữ liệu của bạn đã mất sạch, giờ nếu mình khôi phục dữ liệu vừa backup vào thì ba dòng dữ liệu mình mới thêm vào sẽ không có. Các bạn đừng lo lắng, bây giờ mình cần làm đầu tiên là đóng database lại, để không cho ai có thể cập nhật dữ liệu vào.  Bằng cách là chuyển sang chế độ SINGLE_USER.

ALTER DATABASE SINHVIEN SET SINGLE_USER WITH ROLLBACK IMMEDIATE

- Tiếp đến mình cần ghi lại thời điểm chính xác trước khi chạy câu lệnh xóa dữ liệu.

SELECT GETDATE()

- ví dụ, khi mình chạy nhầm câu lệnh xóa là thời điểm 2016-03-18 20:27:16.473, vậy mình cần khôi phục lại dữ liệu trước thời điểm đó. ví dụ: 2016-03-18 20:25:16.473

- Bây giờ mình tiếp tục backup log lại như sau:

BACKUP LOG SINHVIEN TO DISK='D:SINHVIEN.TRN' WITH INIT

+ Bây giờ, mình tiến hành khôi phục dữ liệu full backup 

USER MASTER
GO
RESTORE DATABASE SINHVIEN FROM DISK='D:SINHVIEN.BAK' WITH NORECOVERY

- Tiến hành khôi phục lại backup log

RESTORE DATABASE SINHVIEN FROM DISK='D:SINHVIEN.TRN' WITH STOPAT='2016-03-18 20:25:16.473'

- Đến đây, là mình đã thành công.

Nhưng hiện tại database mình đang ở chế độ SINGLE_USER bây giờ mình sẽ chuyển lại sang chế độ MULTI_USER để mọi người có thể truy cập lại và cập nhật dữ liệu.

ALTER DATABSE SINHVIEN SET MULTI_USER

Chúc các bạn thành công.

Cách khôi phục dữ liệu trước thời điểm xóa nhầm sqlserver 2008

Cách khôi phục dữ liệu trước thời điểm xóa nhầm sqlserver 2008 Đăng ngày 22-09-2016  Hướng dẫn các bạn khôi phục dữ liệu lại trước thời điểm khi các bạn xóa nhầm một hay nhiều bảng nào đó trong cơ sở dữ liệu. 4.5/10 392

Thảo luận:

Để bình luận bạn phải đăng nhập thành viên.

File tương tự

Files cùng mục

 

File tải nhiều nhất

Megacode.vn - Thư viện mã nguồn chia sẻ, tải file cho cộng đồng
Copyright © 2013-2016. All rights reserved. Bản quyền thuộc VinaGon
Địa chỉ: Số 38 Hàng Bè, Hàng Bạc, Hoàn Kiếm, Hà Nội.
Văn phòng giao dịch: Phòng 28, Tầng 6, HH1A Linh Đàm, Hoàng Mai, Hà Nội
Email: info@vinagon.com | Website: www.vinagon.com | Điện thoại: (+844) 6. 32.979.36;
logo megacode

Megacode đã đăng ký với Bộ Công Thương
Thư viện mã nguồn mở lớn nhất Việt Nam.



Hỗ trợ khách hàng trên Megacode
Hỗ trợ kỹ thuật cho thành viên:
Tổng đài: (+844) 6. 32.979.36
Số di động (Hotline): 0969.091.265
Thời gian làm việc:
Sáng: 8h-12h; Chiều: 13h30-17h30
(Nghỉ chiều T7, CN và các ngày lễ, tết)
Chat với Megacode
https://www.facebook.com/megacodevn