Database Diagram Objek Dukungan tidak dapat Diinstal ... tidak ada pemilik yang valid

132

Saya mencoba membuat diagram database dengan SQL Server 2008, tetapi terjadi kesalahan:

Objek pendukung diagram diagram tidak dapat diinstal karena basis data ini tidak memiliki pemilik yang valid. Untuk melanjutkan, pertama-tama gunakan halaman File dari kotak dialog Properti Database atau pernyataan ALTER AUTHORISATION untuk mengatur pemilik database ke login yang valid, kemudian tambahkan objek dukungan diagram database.

Kemudian saya mencoba yang berikut:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

Kesalahan selanjutnya muncul:

Msg 15404, Level 16, State 11, Line 1 Tidak dapat memperoleh informasi tentang grup Windows NT / pengguna 'WIN-NDKPHUPPNFL \ Administrator', kode kesalahan 0x534.

Masalahnya adalah nama PC telah berubah menjadi "DevPC" Saya juga mengubah ini di skrip pembaruan, tetapi masih 15404 kesalahan yang sama.

Apa yang bisa saya lakukan untuk memperbaiki kesalahan yang mengganggu ini?

Rookian
sumber
4
Anda juga mendapatkan masalah ini saat memulihkan cadangan dari mesin lain.
Tim Abell
Ketika Anda mengembalikan db dari komputer lain, Anda dapat memperbaiki kesalahan ini dengan menjalankan dua perintah: 1) alter authorization on database::[db_name] to [sa], dan kemudian 2) jalankan lagi perintah yang sama dan ganti [sa]dengan pengguna yang memiliki database segera setelah pengembalian.
James L.

Jawaban:

182

Anda harus mempertimbangkan akun otentikasi SQL untuk kepemilikan basis data; maka Anda tidak perlu khawatir tentang akun datang dan pergi, database atau contoh pindah ke server yang berbeda, dan perubahan nama PC Anda berikutnya. Saya memiliki beberapa sistem tempat kami menggunakan:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

Atau jika Anda ingin mengubah pemilik ke akun Administrator lokal itu, maka seharusnya:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

Karena mengganti nama mesin untuk DevPCmenghilangkan akun lokal yang dulu bernama WIN-ND...\Administratordan ini juga telah membatalkan pemilik database saat ini.

Jika SELECT @@SERVERNAME;tidak akurat (seharusnya dikatakan DevPC), maka untuk memastikan bahwa nama server Anda sudah ada dalam SQL Server, Anda mungkin juga ingin mengeluarkan yang berikut ini:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO
Aaron Bertrand
sumber
itu menunjukkan: "WIN-NDKPHUPPNFL" Saya menggunakan pernyataan sql Anda dan berfungsi ... tetapi apakah pengaturan ini benar atau apakah saya harus melakukan hal lain lagi?
Rookian
Yah, itu sangat tergantung. Jika Anda memerlukan basis data untuk dimiliki oleh pengguna domain / workgroup Windows, maka mungkin ada lebih banyak pekerjaan yang harus dilakukan. Secara pribadi, saya menemukan ini bermasalah. Mungkin baca ini dulu: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand
1
Apakah ada masalah dengan pengaturannya sajika Anda menonaktifkan otentikasi sql?
Tim Abell
@ AaronBertrand Hai Saya punya pertanyaan. Dengan default Jika kita membuat database, pemilik database diatur ke pengguna windows saat ini dan jika pengguna windows saat ini juga administrator. Mengapa kita perlu mengubahnya ke Sql Authantication Login. Memang saya tidak bisa mengerti kesalahan ini. Jika kita mengubahnya menjadi login, itu berfungsi. Tetapi Administrator Windows Login juga merupakan Admin Sistem. Bisakah Anda Membantu?
UfukSURMEN
Saya memulihkan banyak database, dan semuanya menampilkan kesalahan dalam pertanyaan OP, meskipun properti masing-masing database menunjukkan pengguna yang valid. Saya menggunakan perintah 1 untuk mengubahnya [sa]dan kemudian saya mengubahnya kembali ke pengguna yang katanya sebelumnya, dan biola, tidak ada lagi kesalahan. Tidak yakin mengapa pemulihan basis data tidak mengatur pemilik basis data dengan benar ...
James L.
208

Di SQL Server Management Studio lakukan hal berikut:

  1. Klik kanan pada database Anda, pilih properti
  2. Buka Halaman Opsi
  3. Di Drop down di sebelah kanan berlabel "Level Kompatibilitas" pilih "SQL Server 2005 (90)" 3-1. pilih "SQL Server 2008" jika Anda menerima kesalahan komparatif.
  4. Pergi ke Halaman File
  5. Masukkan "sa" di kotak teks pemilik. 5-1 atau klik elips (...) dan pilih pemilik yang sah.
  6. Tekan OK

setelah melakukan ini, Anda sekarang dapat mengakses Diagram Database.

masukkan deskripsi gambar di sini

Israel Margulies
sumber
2
Apakah ada alasan mengapa database TIDAK boleh memiliki pemilik? Saya datang ke basis data produk orang lain dan tidak ada pemilik yang ditetapkan. Apakah ini disengaja? (Tidak ada seorang pun di klien yang akan tahu).
Jason Kleban
Database harus memiliki pemilik. Memilih "sa" dan bukan pemilik yang sah hanyalah pilihan mudah untuk memperbaiki kesalahan di atas. Tetapi memilih pemilik yang sah juga memperbaiki masalah.
Pembalasan Lesly
3
Bisakah seseorang menjelaskan tujuan mengubah tingkat kompatibilitas dalam langkah-langkah ini? Hanya mengatur pemilik di bawah file ke 'sa' sudah cukup bagi saya (walaupun saya tidak memiliki sql auth diaktifkan, anehnya).
Tim Abell
Ini berhasil untuk saya. Namun saya memang perlu menghapus pengguna saya dari Databasename> Security.
Gezim
Ini bekerja untuk saya, pada SQL Server 2017, menggunakan Management Studio 17.9, tanpa perlu langkah 1
Giorgio Barchiesi
7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Berhasil.

Rafio
sumber
5

Masukkan "SA" alih-alih "sa" di kotak teks pemilik. Ini berhasil untuk saya.

Adarsh ​​VC
sumber
5

Saya memiliki masalah yang sama.
Saya ingin melihat diagram saya, yang saya buat pada hari yang sama di tempat kerja, di rumah. Tetapi saya tidak bisa karena pesan ini.
Saya menemukan bahwa pemilik database adalah pengguna komputer saya - seperti yang diharapkan. tetapi karena komputer berada dalam domain perusahaan, dan saya tidak terhubung ke jaringan perusahaan, database tidak dapat menyelesaikan pemiliknya.

Jadi yang saya lakukan adalah mengubah pemilik menjadi pengguna lokal dan itu berhasil !!
Semoga ini bisa membantu seseorang.

Anda mengubah pengguna dengan mengklik kanan pada database, properti, file, pemilik

PhpLou
sumber
3

Ini memperbaikinya untuk saya. Ini mengatur pemilik yang ditemukan di bawah bagian 'file' dari jendela properti database, dan seperti yang ditulis oleh studio manajemen.

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Menurut dokumentasi sp_changedbowner ini sudah ditinggalkan sekarang.

Berdasarkan jawaban Israel. Jawaban Harun adalah variasi yang tidak tercela ini.

Tim Abell
sumber
3

Pilih basis data Anda - Klik Kanan - Pilih Properti

Pilih FILE di sisi kiri halaman

Di kotak OWNER, pilih tombol yang memiliki tiga titik (...) di dalamnya

Sekarang pilih pengguna dan Klik OK

Anil Rana
sumber
0

Saya baru saja mengalami ini. Saya telah membaca saran di halaman ini, serta saran SQL Authority (yang merupakan hal yang sama) dan tidak ada yang berhasil.

Pada akhirnya, saya menghapus akun dan menciptakan kembali (dengan nama pengguna / kata sandi yang sama). Sama seperti itu, semua masalah hilang.

Sayangnya, ini berarti saya tidak tahu apa yang salah sehingga saya tidak bisa membagikan hal lain.

Dave
sumber
0

1. Klik kanan pada Database Anda, 2. Kemudian pilih properti. 3. Pilih opsi di tingkat kompatibilitas pilih sql 2008 [100] jika Anda bekerja dengan Microsoft sql 2008.

4.Kemudian pilih file dan tulis (sa) di kotak teks pemilik

100% bekerja untuk saya.

Jefferson X Masonic
sumber
0

Cara yang lebih mudah untuk menyelesaikan masalah ini adalah dengan mengklik kanan nama basis data Anda, pilih "Permintaan Baru", ketik "exec sp_changedbowner 'sa'" dan jalankan kueri. Maka Anda akan baik untuk pergi.

Lebone Mcdonald
sumber
0

Anda harus masuk sebagai administrator klik kanan ke studio manajemen server sql microsofft dan jalankan sebagai admin

abdelnaser rafat
sumber
0

Hanya perlu menjalankannya di editor permintaan ALTER AUTHORISATION ON DATABASE :: YourDatabase TO [domain \ account];

Nui San
sumber
-3

Masalah sebenarnya adalah bahwa pemilik default (dbo) tidak memiliki login yang dipetakan sama sekali. Ketika saya mencoba memetakan sa login ke pemilik database saya menerima kesalahan lain yang menyatakan "Pengguna, grup, atau peran 'dbo' sudah ada ... ". Namun jika Anda mencoba kode ini, kode itu akan berfungsi:

EXEC sp_dbcmptlevel 'yourDB', '90';

Pergilah

ALTER AUTHORISATION ON DATABASE :: yourDB TO "yourLogin"

Pergilah

gunakan [yourDB]

Pergilah

EXECUTE AS USER = NVERBO 'REVERT

Pergilah

Vandana
sumber
-3

klik kanan pada Database Anda, lalu pilih properti. pilih opsi di tingkat kompatibilitas pilih sql 2005 [90] daripada 2008 jika Anda bekerja dengan Microsoft sql 2008. lalu pilih file dan tulis (sa) di kotak teks pemilik. mungkin akan berhasil

Ezzo gasmallah
sumber