Saya harus memelihara dan memperluas sistem lawas lama yang berisi metode layanan web dan tabel database yang tidak lagi digunakan. Karena saya tidak sepenuhnya yakin bahwa tabelnya benar-benar berlebihan, saya takut untuk menjatuhkannya.
Apakah ada cara lain untuk mencapai efek yang sama (tabel tidak dapat digunakan lagi) tanpa menjatuhkannya? Gagasan saya adalah mentransfernya ke skema yang berbeda (misalnya, Deleted
) dari default saat ini dbo
,.
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'Deleted')
BEGIN
EXEC('CREATE SCHEMA Deleted')
END
ALTER SCHEMA Deleted TRANSFER dbo.TableName;
Apakah ada opsi lain atau ada kekurangan pada pendekatan skema?
sumber
Beberapa opsi lain hanya mengganti nama tabel, atau jika mereka memiliki indeks berkerumun, Anda dapat menonaktifkan indeks berkerumun.
sumber
Hapus izin pada tabel dari Peran / Grup / Akun yang [mungkin] akan menggunakannya.
Jika ada yang meledak, pasang kembali [dengan cepat].
Petunjuk: Menggunakan skrip untuk melakukan perubahan ini akan menjadi Ide yang sangat, sangat bagus.
sumber
Menghapus izin pada umumnya tidak akan berhasil karena Anda tidak bisa TERTENTU bahwa seseorang tidak memiliki izin. Mungkin melalui grup, peran atau bahkan karena mereka sysadmin (walaupun mari kita berharap tidak).
Untuk tabel, Anda dapat menonaktifkannya. Dan itu adalah proses yang cepat. Namun untuk mengaktifkannya Anda harus membangunnya kembali dan untuk sebuah meja besar yang bisa memakan waktu cukup lama.
Taruhan terbaik Anda adalah memindahkan objek ke skema baru (seperti yang Anda sarankan) atau memberi nama ulang objek tersebut. Kedua operasi ini cepat dan mudah dilakukan dan dibatalkan. Izin juga akan tetap berlaku di kedua arah.
Langkah tambahan yang dapat Anda ambil adalah menambahkan "catatan TBD" dalam properti yang diperluas dari objek. Anda dapat membuat catatan tentang kapan Anda membuat perubahan, dan / atau catatan apa pun yang mungkin Anda miliki tentang mengapa Anda merasa aman untuk dihilangkan.
Semua yang mengatakan saya akan menjalankan sesi acara yang diperpanjang (atau jejak profiler) selama beberapa hari untuk memastikan Anda memiliki semua objek yang digunakan. Anda dapat sangat membatasi sesi hanya pada nama objek & saat disentuh untuk mengurangi overhead. Pastikan juga Anda menjalankan sesi ini selama beberapa hari di kedua sisi akhir bulan dan bahkan mungkin akhir kuartal untuk memastikan Anda memiliki segalanya.
sumber
Hapus izin seperti yang disarankan Phil W.
Hapus juga izin dari prosedur tersimpan yang menggunakan tabel. Dalam SQL Server, (saya tidak tahu tentang orang lain) izin dirantai dari objek panggilan (misalnya prosedur tersimpan) ke objek yang dipanggil (misalnya tabel).
sumber