Kesalahan dalam mengubah kepemilikan database dari Halaman File di kotak dialog properti database

10

Saya telah memulihkan database dan membuat pengguna baru (pengguna yang sama dengan yang saya masuki) sebagai db_owner. Sekarang ketika saya ingin melihat diagram database mendapat kesalahan

Basis data pendukung Diagram objek tidak dapat diinstal karena basis data ini tidak memiliki pemilik yang valid. Untuk melanjutkan, pertama-tama gunakan halaman file kotak dialog Properti Database atau pernyataan Alter Authorization untuk mengatur pemilik database ke login yang valid, kemudian tambahkan objek dukungan database

Sekarang ketika saya mencoba mengubah kepemilikan dari halaman Files dari Database Properties, saya mendapatkan error sebagai

Tetapkan Pemilik gagal untuk Basis Data 'ABC'. (Microsoft.SqlServer.SMO) Info Tambahan: pengecualian terjadi di SMO Pemilik database baru yang diusulkan James-PC \ James dipetakan sebagai pengguna James dalam database ini. Nama parameter: James-PC \ James "

Tolong bantu saya memperbaiki masalah ini sehingga saya dapat melihat diagram basis data di komputer ini setelah memulihkan cadangan basis data dari sistem lain.

pengguna2826073
sumber

Jawaban:

8

Pemilik basis data adalah login di sys.server_principals yang memiliki database, sebagaimana didefinisikan oleh SID-nya. Setelah pemulihan mungkin dengan mudah bahwa login yang digunakan untuk mengembalikan database bukan login yang sebelumnya adalah pemilik database. (Ini bahkan lebih mungkin terjadi ketika basis data jika dipindahkan antar server.)

Jadi, mungkin ada tiga pengaturan yang Anda mengalami masalah

  1. Database owner_sid tidak sama dengan sid db_owner database. Anda dapat membandingkan ini untuk basis data ABC dengan:

    SELECT owner_sid FROM sys.databases di mana name = 'ABC';

    SELECT sid dari ABC.sys.database_principals WHERE name = 'dbo';

  2. Selanjutnya Anda mendapatkan pesan yang mengatakan bahwa pemilik database yang Anda usulkan juga ada sebagai pengguna di sys.database_principals. Kami tahu ini dari pesan kesalahan tentang pemetaan pemilik yang diusulkan.

Jadi langkah Anda adalah:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

Anda menjatuhkan pengguna yang tidak diperlukan, karena Anda membuatnya menjadi dbo. Setelah itu keluar dari jalan, maka login Anda dapat menjadi pemilik basis data.

EDIT: Anda juga dapat menggunakan SSMS untuk menghapus pengguna James dari basis data ABC. Kemudian Anda bisa kembali ke tab File properti Database untuk mengatur pemilik database. (Maaf, saya cenderung berpikir skrip.)

RLF
sumber
1
Itu menarik, di Management Studio login yang dibuat dbo tidak muncul di bawah YOUR_DB / Keamanan / Pengguna,
joedotnot
-3
  1. database klik kanan
  2. properti
  3. pilih file
  4. perbaiki / atur pemilik (ke PC Anda, atau telusuri dan pilih dengan mengklik "...")

ini bekerja untuk saya di dalam SQL Server Management Studio v17.1

pengguna127505
sumber
2
Saya pikir ini tidak bekerja untuk mereka.
dezso