Saya mendapatkan kesalahan berikut
Cannot execute as the database principal because the principal "dbo"
does not exist, this type of principal cannot be impersonated,
or you do not have permission.
Saya membaca tentang ALTER AUTHORIZATION
, tapi saya tidak tahu di mana database ini terjadi. Kesalahan ini semakin sering meludah, dan menumbuhkan log kesalahan sekitar 1GB setiap hari.
Jawaban:
Saya mengatasi masalah ini dengan menetapkan pemilik basis data. Basis data saya tidak memiliki pemilik sebelum masalah ini. Jalankan perintah ini di basis data Anda untuk mengatur pemilik ke akun sysadmin:
sumber
dbo
masih db_owner dan saya TIDAK BISA MELAKUKAN APA SAJA UNTUK DBO. Menjadi sangat frustasi. Saya tidak bisa mengubah apa pun.Lakukan Secara Grafis.
Basis data klik kanan -> properti -> file -> pilih pemilik basis data -> pilih [sa] - ok
sumber
KB913423 - Anda tidak bisa menjalankan pernyataan atau modul yang menyertakan klausa EXECUTE AS setelah Anda memulihkan database di SQL Server 2005
sumber
Ini juga dapat terjadi ketika database adalah pemulihan dari server SQL yang berbeda atau contoh. Dalam hal itu, prinsip keamanan 'dbo' dalam database tidak sama dengan prinsip keamanan pada server SQL tempat db dipulihkan. Jangan tanya saya bagaimana saya tahu ini ...
sumber
cara lain untuk melakukannya
sumber
Jawaban yang dipilih dan beberapa yang lain semuanya baik. Saya hanya ingin memberikan penjelasan murni SQL. Itu datang ke solusi yang sama bahwa tidak ada pemilik basis data (valid).
Akun pemilik basis data
dbo
yang disebutkan dalam kesalahan selalu dibuat dengan basis data. Jadi sepertinya aneh bahwa itu tidak ada tetapi Anda dapat memeriksa dengan dua pilihan (atau satu tapi mari kita tetap sederhana).yang menunjukkan SID
dbo
pengguna di basis data DB_NAME danuntuk menampilkan semua login (dan SID mereka) untuk contoh server SQL ini. Perhatikan itu tidak menulis awalan db_name, itu karena setiap database memiliki informasi yang sama dalam pandangan itu.
Jadi dalam hal kesalahan di atas tidak akan ada login dengan SID yang ditugaskan untuk pengguna database dbo.
Seperti dijelaskan di atas bahwa biasanya terjadi ketika mengembalikan database dari komputer lain (di mana database dan pengguna dbo dibuat oleh login yang berbeda). Dan Anda dapat memperbaikinya dengan mengubah kepemilikan menjadi login yang ada.
sumber
Jika hal di atas tidak berhasil, coba yang berikut ini. Itu memecahkan masalah bagi saya bahkan ketika pemiliknya didefinisikan dengan baik untuk database.
Penggandaan SQL Server 2008 gagal dengan: proses tidak dapat menjalankan 'sp_replcmds'
sumber
Di bawah Keamanan, tambahkan kepala sekolah sebagai "pengguna SQL tanpa login", buat skema sendiri dengan nama yang sama dengan kepala sekolah dan kemudian di Keanggotaan buatlah db_owner.
sumber
Juga memiliki kesalahan ini ketika secara tidak sengaja memasukkan string koneksi database ke mirror readonly - bukan database utama dalam pengaturan HA.
sumber
Seperti yang dikatakan pesan, Anda harus menetapkan izin sebagai pemilik untuk pengguna Anda. Jadi, Anda dapat menggunakan yang berikut:
Semoga bermanfaat! Tinggalkan komentar jika Anda setuju.
sumber