Sesuatu yang buruk terjadi kemarin.
Tampilan yang dibuat beberapa waktu lalu telah dimodifikasi oleh seseorang yang akhirnya memecahkan laporan. Sayangnya. seseorang (sadar atau tidak sadar) melakukan modifikasi ini dalam basis data PRODUCTION.
Pertanyaan Saya: Apakah ada cara (skrip / perangkat lunak / freeware dll) yang dengannya kami dapat mengetahui siapa (nama pengguna) yang melakukan modifikasi ini, sehingga saya dapat mencabut akses ke basis data produksi untuk pengguna tersebut.
Jika pertanyaan saya tidak jelas, silakan komentar.
sumber
Object:Created
acara dan juga memunculkan tampilan yang dihapus dan dibuat alih-alih diubah. Tidak yakin apa yang Anda maksud dengan tidak mengeksekusi di server? Anda harus terhubung ke instance yang benar tentu saja tetapi tidak masalah dari mana koneksi berasal asalkan Anda memiliki izin.SELECT path FROM sys.traces where is_default=1
Martin sudah menunjuk jalan terbaik, jejak audit administrasi yang biasanya aktif (kecuali jika telah dinonaktifkan secara eksplisit). Jika Anda tidak dapat menemukan info dalam jejak admin (dinonaktifkan atau telah didaur ulang), Anda dapat mengambil info dari cadangan log. Karena ini adalah DB produksi, saya menganggap Anda memiliki siklus cadangan reguler, dengan cadangan penuh berkala dan cadangan log. Anda harus mengembalikan, pada server yang terpisah, ke database sekitar waktu kejadian sehingga DDL berada di log yang dipulihkan saat ini. Kemudian adalah masalah sederhana menggunakan
fn_dblog()
dan memeriksa log.Salah satu caranya adalah dengan memulai operasi transaksi:
Jika
ALTER VIEW
dikeluarkan dalam transaksi mandiri (mis. Tidak dikelilingi olehBEGIN TRANSACTION
/COMMIT
) maka akan memulai transaksi bernamaCreatProc transaction
. Carilah itu, dan[Transaction SID]
SID login yang Anda inginkan.Kemungkinan lain adalah mencari transaksi yang memperoleh SCH_M pada tampilan yang Anda inginkan:
Perhatikan bahwa jika tampilan diubah oleh DROP diikuti oleh CREATE id objek kemungkinan berubah, tetapi setidaknya Anda akan mendapatkan transaksi yang terakhir melakukan CREATE (id objek saat ini dari tampilan di db yang dipulihkan). Dengan id transaksi Anda kembali dan mengambil info transaksi awal:
[SID Transaksi] sekali lagi adalah cowok Anda. Gunakan
SUSER_SNAME
untuk mengambil nama login dari SID login. Jika SID adalah 0x01 itu berarti login itusa
, yang berarti setiap orang yang tahusa
kata sandi bisa melakukannya.sumber
Tidak, kecuali Anda login melalui pemicu DDL atau semacamnya
Anda ingin melihat siapa yang sebagai hak ALTER dalam database itu, atau keanggotaan peran sysadmin / db_owner / ddl_admin. Ini akan lebih baik sebagai ulasan umum daripada perburuan penyihir. Mungkin ada orang lain dengan hak untuk membuat perubahan yang tidak disetujui dan tidak sah juga
sumber
Jika Anda belum melakukannya, Anda mungkin ingin memeriksa laporan Schema Changes History yang tersedia di SQL Server Management Studio. Sepertinya SQL Server mencatat perubahan secara default ( penelusuran standar ) dan Anda harus dapat melihat data itu melalui laporan ini. Satu-satunya hal yang disayangkan adalah bahwa file jejak ini secara otomatis dihapus / berguling seiring waktu, sehingga data mungkin sudah hilang. Semoga berhasil!
sumber