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?

Jawaban:


31

Coba T-SQL untuk melakukan ini:

alter authorization
on schema::YourSchemaName
to dbo
go

drop user 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:

masukkan deskripsi gambar di sini

Jika Anda tidak tahu skema apa yang dimiliki Pengguna, periksa properti Pengguna.

masukkan deskripsi gambar di sini

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).

masukkan deskripsi gambar di sini


1
Cara T-SQL jauh lebih baik dan fleksibel. Melakukannya melalui GUI selalu menyakitkan!
Kin Shah

Saya semua untuk cara T-SQL, juga karena dapat digunakan dalam skrip.
woodvi

2
Catatan: F7 adalah jalan pintas untuk menampilkan detail jika tidak muncul
Simon_Weaver
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.