Tại sao tôi nên lấy cơ sở dữ liệu ngoại tuyến?


14

Vì lý do gì và trong những tình huống nào bạn sẽ sử dụng tính năng "Đưa ngoại tuyến" / ALTER DATABASE dbName SET OFFLINE.

Những nhiệm vụ bạn có thể thực hiện với cơ sở dữ liệu ngoại tuyến? Nhiệm vụ nào bạn chỉ có thể thực hiện với cơ sở dữ liệu ngoại tuyến?

Câu trả lời:


15

Bạn có thể di chuyển tệp MDF sang máy chủ khác để đặt trực tuyến.


4
+1 hoặc ổ đĩa / thư mục khác / SAN ...
Chris S

Có phải đó là cách sử dụng duy nhất cho "lấy ngoại tuyến"?
Greg B

5
Không, tôi có thể nghĩ ra những lý do khác. Hãy tưởng tượng rằng bạn có nhiều cơ sở dữ liệu, cho nhiều ứng dụng. Một trong những ứng dụng đó đang được nâng cấp ứng dụng front-end (ứng dụng web, máy khách, ai biết được.) Bạn muốn vô hiệu hóa quyền truy cập vào cơ sở dữ liệu của bất kỳ ai trong quá trình nâng cấp, nhưng bạn không muốn gỡ bỏ toàn bộ máy chủ Vì các cơ sở dữ liệu khác. Đó có thể là một lý do để đưa nó ngoại tuyến. Tôi chắc rằng trí tưởng tượng của bạn cũng có thể đưa ra những lý do khác.
mfinni

Trí tưởng tượng của tôi không thể sợ, vì vậy câu hỏi. Tôi không nghĩ bạn có thể thay đổi cơ sở dữ liệu khi ngoại tuyến, vì vậy tôi không thấy việc ngoại tuyến có thể hỗ trợ quá trình nâng cấp
Greg B

2
Greg B - tôi đặc biệt nói nâng cấp front-end chứ không phải DB. Trong kịch bản tôi mô tả, DB không thay đổi. Nó sẽ được thực hiện ngoại tuyến để đảm bảo rằng không ai truy cập nó trong quá trình chuyển đổi.
mfinni

18

Trong môi trường phát triển / dàn dựng đôi khi rất hữu ích khi lấy cơ sở dữ liệu ngoại tuyến để đảm bảo rằng bạn đang kết nối với phiên bản đúng của cơ sở dữ liệu trong ứng dụng và bạn không có chuỗi kết nối bị kẹt ở đâu đó.

Điều đó nói rằng, trong tình huống này, một ý tưởng tốt hơn là có các tên cơ sở dữ liệu khác nhau cho các môi trường khác nhau và quy trình xây dựng sẽ tự động định cấu hình chuỗi kết nối của bạn ...

Tương tự, tôi muốn lấy cơ sở dữ liệu ngoại tuyến trong một khoảng thời gian trước khi ngừng hoạt động chúng trong trường hợp không có lý do vì lý do nào đó chúng cần phải quay lại trực tuyến. Tôi đã bị cắn khá nhiều lần bởi các nhà phát triển có móc mà tôi không biết đến một trong những cơ sở dữ liệu của mình khi tôi muốn thoát khỏi nó. Mang nó ngoại tuyến ít quyết liệt hơn và tốn ít thời gian hơn so với xóa nó và khôi phục nó nếu cần.

Một điều nữa sẽ là một biện pháp bảo vệ khẩn cấp. Tôi đã phải làm điều này trước đây. Đôi khi một lỗi khó chịu được tìm thấy trong ứng dụng của bạn, mặc dù không độc hại, vẫn sẽ làm hỏng dữ liệu trong cơ sở dữ liệu của bạn. Lấy cơ sở dữ liệu ngoại tuyến là một cách nhanh chóng để cầm máu cho đến khi bạn nhận được lỗi. Sau đó, bạn có thể đưa nó trở lại trực tuyến để đánh giá thiệt hại trong cơ sở dữ liệu.


2
Tôi thích ý tưởng lấy ngoại tuyến trước khi xóa
Greg B

8
Như trên. Tôi có bốn nghìn cơ sở dữ liệu trong môi trường tiền sản xuất của chúng tôi. Đôi khi thật khó để biết ai sở hữu những gì. Mang nó ngoại tuyến và chờ đợi tiếng rít đôi khi là lựa chọn duy nhất.
Michael Green

6

Mặc dù một số câu trả lời ở đây có thể cung cấp cho bạn một số ý tưởng liên quan đến những gì bạn có thể làm với cơ sở dữ liệu bị hạn chế quyền truy cập, nhưng thực tế không thể thực hiện được nhiều với cơ sở dữ liệu ngoại tuyến. Bạn không thể cập nhật, nâng cấp, thêm hoặc xóa dữ liệu, v.v.


2
Chính xác. Nếu bạn muốn có thể làm được nhiều việc với cơ sở dữ liệu, tốt hơn hết bạn nên đặt nó ở chế độ người dùng. Sau đó, bạn vẫn hạn chế quyền truy cập nhưng có thể làm nhiều hơn nữa.
Sean Howat

Bạn thậm chí không thể đổi tên nó!
Dima Fomin

0

Lý do bao trùm của tôi, lý do tôi phải bán cho DBA thường xuyên hơn là tôi muốn liệt kê ...

"SAN cần sửa chữa ... và không, tôi không thể trao đổi ổ đĩa nóng, bảng nối đa năng / bộ điều khiển bị lỗi."

Các trường hợp DB hoạt động rất tệ khi các đĩa của chúng biến mất.

Do đó, tôi tắt các phiên bản SQL trước khi lấy SAN ngoại tuyến và sau đó đưa chúng trở lại từng cái một để chúng không tranh chấp tài nguyên - phiên bản đầu tiên lấy tất cả tài nguyên cụm và trở thành nút Active DB, các phiên bản tiếp theo chạy như các nút thụ động.


-3

Có nhiều lý do tại sao bạn cần phải làm điều này ..

Ví dụ,

consider changing or upgrading the actual database program/binary...
consider changing or upgrading the schema or tables..
consider changing or upgrading index's..

Điểm quan trọng nhất ..

Is taking a backup.. to get a perfect snapshot in time.. 

(trong một số DB bạn chỉ cần tạo một khóa trên tất cả các bảng)


+1, cũng là DBMS cũ hơn để chống phân mảnh hoặc thu hẹp DB.
Chris S

1
re: "thay đổi hoặc nâng cấp lược đồ", từ sách trực tuyến "OFFLINE Cơ sở dữ liệu được đóng, tắt sạch và được đánh dấu ngoại tuyến. Cơ sở dữ liệu không thể được sửa đổi trong khi ngoại tuyến." Làm thế nào bạn có thể nâng cấp lược đồ trong tình huống này?
Greg B

Xin lỗi .. tôi đã tham khảo các thay đổi đối với cơ sở dữ liệu không hoạt động .. Tôi là người theo dõi MySQL, tôi cho rằng việc nâng cấp sẽ diễn ra trên cơ sở dữ liệu được đánh dấu ngoại tuyến, vì vậy nó không có bất kỳ vấn đề tương tranh nào với bất kỳ thay đổi nào khác ngoài thay đổi cần thiết. Có lẽ chúng ta có thể bỏ nó ra sau đó ..: D
Arenstar

2
Cơ sở dữ liệu thực sự hỗ trợ sao lưu thực, bạn biết. Bạn không cần phải lấy nything mà chỉ là một món đồ chơi để tạo ra một bản sao lưu hoàn hảo trong thời gian nhất quán. Một db yêu cầu khóa hoặc một số cơ chế ngu ngốc khác là một món đồ chơi. Có thật không. Tất cả các cơ sở dữ liệu chính không có vấn đề với sao lưu đầy đủ, phù hợp, trong khi sử dụng nặng.
TomTom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.