Dalam SQL Server 2005, apakah ada cara untuk menemukan pengguna yang tidak ada di tingkat server (akun yang dihapus di tingkat server tetapi tidak dipisahkan dari database sebelum dihapus) atau akun yang tidak ditautkan (akun mungkin telah dihapus di tingkat server tetapi tidak pada tingkat db, kemudian dibaca kembali tetapi tingkat db tidak pernah dibersihkan).
Saya punya server yang sangat berantakan dan akan luar biasa jika ada permintaan untuk menjalankannya.
sql-server
sql-server-2005
users
DForck42
sumber
sumber
Jawaban:
The berikut script dari situs Brent Ozar terbatas iterates melalui semua database dan daftar pengguna yatim oleh database, bersama dengan perintah drop untuk menghapusnya. Mungkin ada cara yang lebih rapi / lebih baru dalam menangani ini tetapi ini tampaknya berfungsi dengan benar pada 2005-2012.
sumber
Saya ingin TERIMA KASIH sebelumnya untuk memposting skrip. Ini menyelamatkan saya banyak waktu menulisnya dari awal. Saya memodifikasinya sedikit sejak saya mengalami masalah di mana saya menerima kesalahan yang menyatakan "database principal memiliki skema dalam database, dan tidak dapat dijatuhkan" kesalahan. Saya memodifikasi skrip untuk menghasilkan perintah untuk kesalahan SCHEMA dan juga untuk kesalahan Peran jika Anda harus mendapatkannya juga.
Semoga ini bisa membantu seseorang di luar sana ..
sumber
Sp_change_users_login ini disusutkan pada SQL 2008 tetapi masih berfungsi dengan baik. Jika Anda melewatkan opsi 'laporkan' maka akan mencantumkan semua pengguna yang tidak memiliki login terkait.
Jika Anda ingin menjalankannya untuk semua basis data Anda, Anda dapat melakukannya seperti ini.
Jika Anda mencarinya di BOL, Anda juga akan menemukan opsi untuk memperbaiki pengguna "yatim".
sumber