Câu chuyện dài ngắn là tôi đã cố gắng nhanh chóng cập nhật một hàng trong SQL Server bằng cách sử dụng studio quản lý và chỉ cần nhập UPDATE table SET column='value'
và quên phần WHERE other_column='other_value'
. Đã đi ăn trưa, trở lại và có 15 email chưa đọc đang đợi tôi. Đã xảy ra khoảng một giờ trước, chờ đợi cho anh chàng cơ sở dữ liệu quay trở lại để xem khi sao lưu cuối cùng là. Tuy nhiên, không có tính năng ảo thuật nào của UNDO?SQL Server có bất kỳ loại tính năng hoàn tác ma thuật nào không?
Trả lời
Có, đó là - đó là nhật ký giao dịch. Để khôi phục từ một cái gì đó như thế này, miễn là bạn có cơ sở dữ liệu trong mô hình khôi phục FULL, bạn chỉ cần thực hiện một bản sao lưu nhật ký giao dịch khác, và sau đó thực hiện khôi phục với tùy chọn STOPAT để báo khôi phục ngừng khôi phục tại điểm thời gian ngay trước khi bạn bắt đầu giao dịch của mình. Điều này sẽ hoàn nguyên cơ sở dữ liệu về điểm sai lầm của bạn.
Xem tại đây để biết thêm thông tin về cách sử dụng tùy chọn STOPAT - http://msdn.microsoft.com/en-us/library/ms186858(SQL.90).aspx.
Kịch bản của bạn sẽ giống như thế này ...
-- backup the existing log
BACKUP LOG [MyDatabase]
TO DISK = N'\\MyServer\Share\MyDatabase.trn'
-- options left out for brevity
GO
-- restore the database first
RESTORE DATABASE [MyDatabase]
FROM DISK = N'\\MyServer\Share\MyDatabase.bak'
WITH FILE = 1,
NORECOVERY,
NOUNLOAD,
STATS = 10
GO
/* Previous transaction logs in the chain go here... */
/* restore your log that you backed up after the mistake
took place, stopping at your point where the problem happened */
RESTORE LOG [MyDatabase]
FROM DISK = N'\\MyServer\Share\MyDatabase.trn'
WITH FILE = 1,
NORECOVERY,
NOUNLOAD,
STATS = 10,
STOPAT = '2010-03-12 13:00'
GO
Nhật ký giao dịch là bạn của bạn, và bao nhiêu người trong chúng ta đang nghĩ, "Tôi ghét khi tôi làm điều này ..." – dverespey
Chúng ta đã hoàn tất nó - nhưng chỉ để cho nó xảy ra ONCE. Sai lầm như thế này có nghĩa là để được học hỏi từ :) –
Bài viết tuyệt vời, tôi sẽ cố gắng này trong một chút –
Nó được gọi là nhật ký giao dịch. Bạn có thể cuộn lại. Bạn đã cuộn hoàn toàn toàn bộ đăng nhập trở lại một thời điểm cụ thể, không chỉ là một giao dịch xấu của bạn.
nếu bạn sao chép lại cơ sở dữ liệu và sao lưu nhật ký giao dịch sau đó bạn có thể làm một điểm trong thời gian khôi phục đến thời điểm trước khi thực hiện báo cáo cập nhật nếu không thì không , không thực sự
Tôi sợ không có gì. Đây là lý do tại sao tôi luôn viết chọn xem kết quả và sau đó chuyển đổi nó để cập nhật. Ngoài ra đã học được bài học một cách khó khăn lol. Ofcourse bạn có thể khôi phục từ nhật ký giao dịch.
How to: Restore to a Point in Time (Transact-SQL)
Các "thời điểm" là "ohnosecond" trước khi bạn điều bollixed ...
- 1. HandleError thuộc tính không có bất kỳ tác dụng
- 2. SQL Server: bất kỳ tương đương strpos()?
- 3. SMLNJ có bất kỳ loại trình gỡ lỗi nào không?
- 4. cv :: goodFeaturesToTrack không trả lại bất kỳ tính năng nào
- 5. Có 43679 số ma thuật không?
- 6. Có bất kỳ lợi ích hiệu suất nào khi sử dụng SQL Server 2008 trên SQL Server 2005 không?
- 7. Thực hiện bất kỳ trình biên dịch c nào có thực hiện bất kỳ tính năng C1X nào không?
- 8. Có bất kỳ vấn đề Hiệu suất nào khi sử dụng ISNULL() trong SQL Server không?
- 9. Có bất kỳ khung công tác ORM nào cho Web SQL (javascript) không?
- 10. Có bất kỳ tác dụng phụ nào khi sử dụng cho nhiều chức năng tĩnh không?
- 11. Có bất kỳ khung công tác web Haskell gốc, chức năng hơn nào không?
- 12. Có bất kỳ khung công tác web MVC nào hỗ trợ nhiều loại yêu cầu không?
- 13. Khả năng tương tác SQL-Server và MySQL?
- 14. Bất kỳ loại thuộc tính "Ẩn" nào trong System.ComponentModel.DataAnnotations?
- 15. Tính năng hoàn tác cho Hộp văn bản
- 16. SQL Server 2005 Nhận ngày đầu tiên và cuối cùng cho bất kỳ tháng nào trong bất kỳ năm nào
- 17. Quirky __set() ma thuật chức năng
- 18. Perl có loại mảng liên kết có thể có bất kỳ loại khóa nào không?
- 19. Việc thêm [Serializable] vào lớp có bất kỳ tác động hiệu suất nào không?
- 20. Có chức năng hồi quy tuyến tính nào trong SQL Server không?
- 21. php tương tác shell không có bất kỳ đầu ra?
- 22. Bất kỳ BNF IDE nào có các tính năng thử nghiệm
- 23. Không cho phép bất kỳ thao tác nào
- 24. Cập nhật SQL hoàn tác
- 25. Có bất kỳ mã hoặc thuật toán nào để nhận dạng chữ ký không?
- 26. Bất kỳ khung công tác NIO nào cho .NET?
- 27. SQL Server có một tính năng tương tự như Oracle Streams Advanced Queuing không?
- 28. Làm cách nào để hoàn tác truy vấn UPDATE của SQL Server?
- 29. Có bất kỳ bất lợi nào đối với SEAM không?
- 30. Có bất kỳ triển khai Ma trận Sparse nào được tối ưu hóa trong C# không?
câu hỏi liên quan: http://stackoverflow.com/questions/168486/whats-your-1 -way-to-be-careful-with-a-live-database/ –