Kami sedang mencari untuk menonaktifkan contoh SQL Server yang masih memiliki beberapa basis data.
Bagaimana saya bisa tahu jika masih digunakan oleh pengguna atau aplikasi web?
Saya menemukan utas forum yang memiliki kueri T-SQL yang dapat Anda jalankan untuk mengambil tanggal kueri terakhir. Tampaknya berfungsi tetapi saya ingin tahu apakah informasi ini cukup valid untuk menjatuhkan basis data. Apakah itu?
Jika Anda memiliki metode alternatif yang akan membantu juga.
sql-server
t-sql
jsauni
sumber
sumber
Jawaban:
Anda harus khawatir dengan item yang telah dihapus dari cache dan bahwa Anda telah terjawab, atau untuk database yang memiliki penggunaan yang jarang.
Alih-alih menjatuhkan database dari tangan, letakkan keduanya OFFLINE untuk mencegah akses tanpa menjatuhkannya atau dalam mode RESTRICTED_USER untuk membatasi akses. Dengan melakukan ini, Anda dapat membiarkan mereka dalam keadaan itu selama satu atau dua bulan untuk memeriksa dan melihat apakah ada penggunaan sesekali.
Anda juga bisa melihat untuk menggunakan penyaringan jejak profiler sisi server pada database itu.
sumber
Ini adalah metode yang saya gunakan di masa lalu:
Masalahnya adalah ini: berapa lama Anda menunggu sebelum Anda yakin tidak ada yang akan mengakses data? Untuk data keuangan, Anda memiliki beberapa item berjalan harian, mingguan, bulanan, triwulanan, semi-tahunan, dan tahunan. Tetapi apakah satu tahun cukup lama? Saya juga telah melihat permintaan agar data tersedia setidaknya selama 7 tahun, dan dalam satu kasus saya diberi tahu bahwa data dalam satu sistem perlu ada di sana selamanya, meskipun tidak ada yang menggunakannya.
Saran terbaik adalah ini: apa pun yang Anda lakukan untuk mematikan akses, pastikan Anda dapat segera mengaktifkannya kembali. Saya menemukan bahwa pengiriman bekerja paling baik untuk ini. Saya hanya akan membuat skrip pada reattach dan menginstruksikan tim saya "jika ada yang bertanya di mana itu, jalankan skrip ini". Itu memberi kami kesempatan terbaik untuk mengembalikan barang secepat mungkin.
sumber
Saya setuju dengan Nic dengan nasihatnya. Jika Anda perlu memastikan, maka Anda harus pergi dengan Profiler (Layanan sisi jejak) karena beberapa query SQL tidak akan di-cache atau karena alasan apa pun prosedur cache bisa dibersihkan.
Saya biasanya akan memeriksa informasi statistik file virtual juga untuk melihat apakah ada membaca atau menulis yang terjadi di tingkat file OS. Bahkan jika database TIDAK aktif, Anda masih akan melihat sedikit baca / tulis jika Anda mengambil cadangan log, cadangan penuh dll ... tetapi itu juga akan memberi Anda gambaran tentang aktivitas baca / tulis pada database itu.
Sebelum menjatuhkan basis data apa pun, saya akan pastikan Anda memiliki minimal 2 atau 3 cadangan yang dapat dibaca (mengujinya) di lokasi yang terpisah. Anda tidak pernah tahu kapan Anda membutuhkannya.
sumber
Kueri berikut menunjukkan DB yang tidak memiliki penggunaan sejak restart terakhir, tanpa bergantung pada rencana kueri yang disimpan dalam cache, karena ia memperlihatkan pengguna IO terhadap indeks (dan heap). Ini semacam jalur menggunakan statistik file virtual, tetapi DMV yang digunakan di sini mengecualikan aktivitas IO dari cadangan. Tidak perlu menjaga jejak profiler berjalan, tidak ada pemicu atau audit yang diperlukan. Tentu saja, jika Anda sering me-restart server SQL Anda (atau Anda sering melampirkan / mematikan database), ini mungkin bukan cara yang tepat :-)
Karena itu, masih setuju bahwa meskipun permintaan ini tampaknya mengkonfirmasi bahwa DB dapat dihapus, pasti melakukan OFFLINE / lepaskan atau menolak akses pengguna untuk beberapa waktu, ditambah uji tuntas bertanya sekitar sebelum benar-benar jatuh!
sumber
Saya telah bekerja di tempat yang memiliki banyak basis data yatim dan semi-yatim. Sulit untuk mengatakan apakah mereka benar-benar yatim karena banyak tugas musiman atau tahunan - sehingga situs web hanya berjalan selama 3-4 bulan per tahun (sebagai contoh, formulir W2 perlu diajukan secara elektronik 1/31, sehingga pemrosesan situs web ini hanya berjalan dari pertengahan Januari hingga akhir April).
Apa yang dilakukan adalah kombinasi dari:
* tanyakan setiap pengembang apakah mereka menggunakan beberapa database atau yang lain (email ini akan keluar setiap bulan atau setiap kali cadangan terlalu lama).
* Bawalah database secara offline dan lihat siapa yang mengeluh.
* ganti nama server untuk melihat siapa yang mengeluh.
Karena bos berambut runcing hanya bersedia untuk mengizinkan dokumentasi "lengkap dan lengkap", wiki secara tegas dilarang, dan pengurangan staf menyebabkan penurunan dramatis dalam dokumentasi yang memenuhi standar.
Jika itu terserah saya, akan ada halaman wiki per server dengan nama kontak untuk setiap basis data (dan mungkin deskripsi singkat untuk apa basis data itu). Basis data yang tidak berdokumen pada wiki akan menjadi permainan yang adil untuk dihapus.
Kami memiliki satu klien keuangan besar yang masih menggunakan SQL Server 2000 hingga 2009, jadi kami harus tetap menjalankan satu contoh SQL Server 2000 sampai klien itu akhirnya pindah ke SQL Server 2005.
sumber
Dua alternatif lain adalah:
Aktifkan audit pada DBs.
sumber
Solusi berikutnya menunjukkan halaman sementara total, bersih dan kotor dalam MB untuk database tertentu dalam instance Anda (ditemukan di internet dan sedikit dimodifikasi):
atau
atau
sumber