Prinsipal basis data memiliki skema dalam basis data, dan tidak dapat dijatuhkan pesan
28
Saya mencoba menghapus prinsipal dari database tetapi tidak bisa karena memiliki skema. Ketika saya pergi untuk mengedit pengguna, kotak untuk menghapus centang skema berwarna biru dan tidak dapat dihapus. Bagaimana saya bisa menghapus kepala sekolah dari skema ini?
alterauthorizationonschema::YourSchemaName
to dbo
go
dropuser TheUserYouWantToDelete
go
Anda tidak dapat menjatuhkan prinsipal yang merupakan pemilik skema, sehingga ALTER AUTHORZATIONperubahan skema yang dimiliki (saya gunakan YourSchemaName, tapi jelas menggantikannya dengan skema yang dimiliki dalam database Anda) untuk dbo(juga, Anda dapat mengubah kepemilikan ke prinsip apa pun yang Anda butuhkan di lingkungan Hidup). Itu akan memungkinkan Anda untuk menjatuhkan pengguna yang sebelumnya memiliki skema (misalnya tujuan yang saya gunakan TheUserYouWantToDelete, tetapi itu akan menjadi bukan pemilik yang ingin Anda jatuhkan).
Oke, jadi ini berhasil. Namun saya agak bingung mengapa. Mengapa saya perlu mengotorisasi skema ke skema lain? Mungkin saya perlu meninjau skema ...
rsteckly
1
@ benar-benar Sederhana, otorisasi = kepemilikan. Jika Anda dapat menghapus pengguna yang memiliki skema, skema tersebut tidak akan valid, karena pemiliknya tidak ada lagi. Bayangkan Anda bisa menghapus pelanggan yang telah melakukan pemesanan. Apa yang dimaksud dengan CustomerID dalam tabel Pesanan jika tidak ada lagi Pelanggan yang ditunjuknya? Di mana saya harus mengirimkan pesanan?
Aaron Bertrand
Maaf, contoh saya tidak dijelaskan dengan baik. Kami tidak mengubah otorisasi ke dboskema, kami mengubah otorisasi ke dboprinsipal. Itu bisa saja prinsipal basis data apa pun.
Thomas Stringer
30
Cara T-SQL bekerja. Berkat
http://zarez.net/?p=179
saya menemukan cara SSMS untuk melakukan ini (UI).
Untuk mengubah pemilik skema dari Sql Server Management Studio:
Expand your database-> Security -> Schemas
Di Rincian Penjelajah Objek, Anda dapat melihat daftar skema dan pemilik:
Jika Anda tidak tahu skema apa yang dimiliki Pengguna, periksa properti Pengguna.
Buka properti skema yang dimiliki Pengguna, dan klik "Cari" untuk menemukan pemilik baru. Jika Anda tidak tahu pemilik baru, Anda bisa "Jelajahi" untuk satu.
Properites -> Search ->Browse
dan Anda dapat mengubah pemilik skema menjadi dbo (atau siapa pun yang paling tepat).
dbo
skema, kami mengubah otorisasi kedbo
prinsipal. Itu bisa saja prinsipal basis data apa pun.Cara T-SQL bekerja. Berkat http://zarez.net/?p=179 saya menemukan cara SSMS untuk melakukan ini (UI).
Untuk mengubah pemilik skema dari Sql Server Management Studio:
Di Rincian Penjelajah Objek, Anda dapat melihat daftar skema dan pemilik:
Jika Anda tidak tahu skema apa yang dimiliki Pengguna, periksa properti Pengguna.
Buka properti skema yang dimiliki Pengguna, dan klik "Cari" untuk menemukan pemilik baru. Jika Anda tidak tahu pemilik baru, Anda bisa "Jelajahi" untuk satu.
dan Anda dapat mengubah pemilik skema menjadi dbo (atau siapa pun yang paling tepat).
sumber