Mengapa saya membuat basis data offline?

14

Untuk alasan apa dan dalam situasi apa Anda menggunakan fitur "Ambil Offline" / ALTER DATABASE dbName SET OFFLINE.

Tugas apa yang dapat Anda lakukan dengan database offline? Tugas apa yang hanya dapat Anda lakukan dengan database offline?

Greg B
sumber

Jawaban:

15

Anda dapat memindahkan file MDF ke server lain untuk membuatnya online.

mfinni
sumber
4
+1, atau drive / folder / SAN lain ...
Chris S
Apakah itu satu-satunya penggunaan untuk "offline"?
Greg B
5
Tidak, saya bisa memikirkan alasan lain. Bayangkan Anda memiliki banyak basis data, untuk banyak aplikasi. Salah satu aplikasi tersebut mendapatkan pembaruan aplikasi front-end (aplikasi web, klien, siapa tahu.) Anda ingin menonaktifkan akses ke database oleh siapa pun selama pembaruan, tetapi Anda tidak ingin menurunkan seluruh server karena database lain. Itu bisa menjadi alasan untuk membuatnya offline. Saya yakin imajinasi Anda bisa muncul dengan alasan lain juga.
mfinni
Imajinasi saya tidak dapat saya takuti, karena itu pertanyaannya. Saya tidak berpikir Anda bisa mengubah database saat offline, jadi saya tidak melihat bagaimana menjadikannya offline dapat membantu dalam proses peningkatan
Greg B
2
Greg B - saya secara khusus mengatakan meningkatkan front-end, bukan DB itu sendiri. Dalam skenario yang saya jelaskan, DB dibiarkan tidak berubah. Itu akan diambil offline untuk memastikan bahwa tidak ada yang mengaksesnya selama transisi.
mfinni
18

Dalam lingkungan pengembangan / pementasan, kadang-kadang berguna untuk membuat basis data offline untuk memastikan bahwa Anda tersambung ke instance database yang tepat dalam aplikasi dan bahwa Anda tidak memiliki string koneksi yang didongkrak di suatu tempat.

Yang mengatakan, dalam situasi ini adalah ide yang jauh lebih baik untuk memiliki nama database yang berbeda untuk lingkungan yang berbeda dan proses build yang secara otomatis akan mengkonfigurasi string koneksi Anda ...

Demikian pula, saya suka mengambil offline database untuk jangka waktu tertentu sebelum menonaktifkan mereka dalam (tidak begitu) dari kemungkinan bahwa untuk beberapa alasan mereka perlu kembali online. Saya telah beberapa kali digigit oleh para dev yang memiliki kaitan yang tidak saya ketahui ke dalam salah satu basis data saya ketika saya ingin menyingkirkannya. Mengambilnya offline jauh lebih drastis dan memakan waktu lebih sedikit daripada menghapusnya dan mengembalikannya jika perlu.

Hal lain adalah sebagai pengamanan darurat. Saya harus melakukan ini sebelumnya. Terkadang bug jahat ditemukan di aplikasi Anda yang, meskipun tidak berbahaya, masih akan merusak data di database Anda. Membuat basis data offline adalah cara cepat untuk menghentikan pendarahan sampai Anda mengidentifikasi bug. Anda kemudian dapat membawanya kembali online untuk menilai kerusakan dalam database.

squillman
sumber
2
Saya menyukai gagasan offline sebelum dihapus
Greg B
8
Dito. Saya memiliki empat ribu basis data di lingkungan pra-produksi kami. Terkadang sulit untuk mengetahui siapa yang memiliki apa. Membiarkannya offline dan menunggu jeritan adalah satu-satunya pilihan.
Michael Green
6

Sementara beberapa jawaban di sini mungkin memberi Anda beberapa ide mengenai apa yang dapat Anda lakukan dengan database yang memiliki akses terbatas, tidak banyak yang bisa dilakukan dengan database yang offline. Anda tidak dapat memperbarui, meningkatkan, menambah atau menghapus data, dll.

joeqwerty
sumber
2
Benar. Jika Anda ingin bisa melakukan banyak hal dengan database, Anda lebih baik meletakkannya dalam mode pengguna tunggal. Maka Anda masih membatasi akses tetapi bisa melakukan lebih banyak.
Sean Howat
Anda bahkan tidak dapat mengubah nama itu!
Dima Fomin
0

Alasan utama saya, yang harus saya jual ke DBA lebih sering daripada yang ingin saya sebutkan ...

"SAN perlu diperbaiki ... dan tidak, aku tidak bisa hanya menukar drive, backplane / controller salah."

Contoh DB berperilaku sangat buruk ketika disk mereka pergi.

Jadi, saya menutup instance SQL sebelum mengambil SAN offline, dan kemudian mengembalikannya satu per satu sehingga mereka tidak memperebutkan sumber daya - contoh pertama mengambil semua sumber daya klaster dan menjadi simpul DB Aktif, contoh berikutnya dijalankan sebagai node Pasif.

George Erhard
sumber
-3

Ada banyak alasan mengapa Anda perlu melakukan ini ..

Sebagai contoh,

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

Poin paling penting ..

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

(di beberapa DB, Anda hanya membuat kunci di semua tabel)

Arenstar
sumber
+1, juga DBMS yang lebih lama untuk mendefrag atau menyusutkan DB.
Chris S
1
re: "mengubah atau meningkatkan skema", dari buku online "OFFLINE Basis data ditutup, dimatikan dengan bersih, dan ditandai luring. Basis data tidak dapat dimodifikasi saat sedang luring." Bagaimana Anda bisa memutakhirkan skema dalam situasi ini?
Greg B
Maaf .. saya merujuk untuk membuat perubahan ke database tidak aktif .. Saya seorang pengikut MySQL, saya berasumsi upgrade akan terjadi pada database yang ditandai offline, sehingga tidak memiliki masalah konkurensi dengan hal lain selain perubahan yang diperlukan. Mungkin kita bisa meninggalkan ini kalau begitu ..: D
Arenstar
2
Basis data nyata mendukung backup nyata, Anda tahu. Anda tidak perlu mengambil apa pun kecuali mainan ofline untuk membuat cadangan yang konsisten dalam waktu dan sempurna. Db yang membutuhkan kunci atau mekanisme bodoh lainnya adalah mainan. Betulkah. Semua database utama tidak memiliki masalah dengan backup penuh, konsisten, saat digunakan berat.
TomTom