Veritabanı Diyagramı Destek Nesneleri Yüklenemez… geçerli sahip yok


132

SQL Server 2008 ile bir veritabanı diyagramı oluşturmaya çalıştım, ancak bir hata oluştu:

Veritabanı diyagramı destek nesneleri yüklenemiyor çünkü bu veritabanının geçerli bir sahibi yok. Devam etmek için, veritabanı sahibini geçerli bir oturum açmaya ayarlamak için önce Veritabanı Özellikleri iletişim kutusunun Dosyalar sayfasını veya ALTER AUTHORIZATION ifadesini kullanın, ardından veritabanı diyagramı destek nesnelerini ekleyin.

Sonra şunu denedim:

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

Sonraki hata ortaya çıkıyor:

Msg 15404, Level 16, State 11, Line 1 Windows NT grubu / kullanıcısı 'WIN-NDKPHUPPNFL \ Administrator', 0x534 hata kodu hakkında bilgi alınamadı.

Sorun, bilgisayarın adı "DevPC" olarak değiştirildi Bunu güncelleme komut dosyasında da değiştirdim, ancak yine de aynı hata 15404.

Bu can sıkıcı hatayı düzeltmek için ne yapabilirim?


4
Bu sorunu, farklı bir makineden bir yedeklemeyi geri yüklediğinizde de alırsınız.
Tim Abell

Bir db'yi başka bir makineden geri yüklediğinizde, iki komut çalıştırarak bu hatayı düzeltebilirsiniz: 1) alter authorization on database::[db_name] to [sa]ve ardından 2) aynı komutu tekrar çalıştırın [sa]ve geri yüklemeden hemen sonra veritabanının sahibi olan kullanıcıyla değiştirin .
James L.

Yanıtlar:


182

Veritabanı sahipliği için SQL kimlik doğrulama hesabını düşünmelisiniz; o zaman gelen ve giden hesaplar, farklı sunuculara taşınan veritabanları veya örnekler ve bir sonraki PC adınızın değişmesi konusunda endişelenmenize gerek kalmaz. Kullandığımız birkaç sistemim var:

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

Veya sahibi söz konusu yerel Yönetici hesabına değiştirmek istiyorsanız, o zaman şu şekilde olmalıdır:

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

Çünkü makineyi olarak yeniden adlandırmak, önceden adlandırılmış olan DevPCyerel hesabı ortadan kaldırdı WIN-ND...\Administratorve bu, veritabanının mevcut sahibini de geçersiz kıldı.

Doğru SELECT @@SERVERNAME;değilse (söylemesi gerekir DevPC), sunucunuzu yeniden adlandırmanızın SQL Server içinde tutulduğundan emin olmak için, aşağıdakileri de vermek isteyebilirsiniz:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

şunu gösteriyor: "WIN-NDKPHUPPNFL" sql ifadenizi kullandım ve çalışıyor ... ama bu kurulum doğru mu yoksa başka bir şey yapmam gerekiyor mu?
Rookian

Bu gerçekten bağlıdır. Veritabanınızın bir Windows etki alanı / çalışma grubu kullanıcısına ait olması gerekiyorsa, muhtemelen yapılacak daha çok iş vardır. Şahsen ben bunu sorunlu buluyorum. Belki önce şunu okuyun: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand

1
saSql kimlik doğrulamasını devre dışı bıraktıysanız , ayarlamada herhangi bir sorun var mı?
Tim Abell

@AaronBertrand Merhaba Bir sorum var. Varsayılan olarak bir veritabanı veritabanı oluşturursak, sahibi mevcut Windows kullanıcısına ayarlanır ve mevcut Windows kullanıcısı da yönetici ise. Neden Sql Authantication Login olarak değiştirmemiz gerekiyor. Doğrusu bu hatayı anlayamıyorum. Bunu bir oturum açma olarak değiştirirsek çalışır. Ancak Yönetici Windows Oturumu aynı zamanda Sistem Yöneticisidir. Yardım edebilir misin?
UfukSURMEN

Bir grup veritabanını geri yükledim ve her veritabanının özellikleri geçerli bir kullanıcı gösterse de, hepsi OP'nin sorusundaki hatayı görüntüledi. 1. komutu olarak değiştirmek için kullandım [sa]ve daha önce söylediği kullanıcıya geri değiştirdim ve daha fazla hata yok. Bir veritabanı geri yüklemesinin neden veritabanı sahibini doğru şekilde ayarlamadığından emin değilim ...
James L.

208

SQL Server Management Studio'da aşağıdakileri yapın:

  1. Veritabanınıza sağ tıklayın, özellikleri seçin
  2. Seçenekler Sayfasına Git
  3. Sağdaki "Uyumluluk Düzeyi" etiketli açılır menüden "SQL Server 2005 (90)" 3-1'i seçin. Bir karşılaştırılabilirlik hatası alırsanız "SQL Server 2008" i seçin.
  4. Dosyalar Sayfasına Git
  5. Sahip metin kutusuna "sa" girin. 5-1 veya üç noktaya tıklayın (...) ve gerçek bir sahip seçin.
  6. Tamam'a basın

bunu yaptıktan sonra, artık Veritabanı Diyagramlarına erişebileceksiniz.

görüntü açıklamasını buraya girin


2
Bir veritabanının sahibi OLMAMASI için herhangi bir sebep var mı? Başkasının ürün veritabanına giriyorum ve sahip ayarlanmamış. Bu kasıtlı mıydı? (Müşteride bilen kimse yok).
Jason Kleban

Veritabanının bir sahibi olmalıdır. Hak sahibi yerine "sa" yı seçmek, yukarıdaki hatayı düzeltmek için basit bir seçimdir. Ancak gerçek bir sahip seçmek de sorunu çözdü.
Lesly Revenge

3
Birisi bu adımlarda uyumluluk düzeyini değiştirmenin amacını açıklayabilir mi? Dosyaların altındaki sahibi 'sa' olarak ayarlamak benim için yeterliydi (sql kimlik doğrulamasını etkinleştirmemiş olmama rağmen, garip bir şekilde).
Tim Abell

Bu benim için çalıştı. Yine de kullanıcımı Databasename> Security'den kaldırmam gerekiyordu.
Gezim

Bu benim için çalıştı, SQL Server 2017'de Management Studio 17.9'u kullanarak, 1. adıma gerek kalmadan
Giorgio Barchiesi

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

İşe yarıyor.



5

Ben de aynı sorunu yaşadım.
Aynı gün işte oluşturduğum diyagramımı evde görmek istedim. Ama bu mesaj yüzünden yapamadım.
Veritabanının sahibinin bilgisayarımın kullanıcısı olduğunu öğrendim - beklendiği gibi. ancak bilgisayar şirketin etki alanında olduğu ve şirketin ağına bağlı olmadığım için veritabanı sahibini çözemedi.

Yaptığım şey, sahibini yerel bir kullanıcı olarak değiştirmek oldu ve işe yaradı!
Umarım bu birine yardımcı olur.

Veritabanına, özelliklere, dosyalara, sahibine sağ tıklayarak kullanıcıyı değiştirirsiniz


3

Bu benim için düzeltti. Veritabanı özellikleri penceresinin 'dosyalar' bölümünde bulunan sahibi ayarlar ve yönetim stüdyosu tarafından yazılan gibidir.

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

Göre sp_changedbowner belgelerinde bu artık önerilmemektedir.

İsrail'in cevabına göre. Aaron'un cevabı, bunun küçümsenmemiş varyasyonudur.


3

Veritabanınızı seçin - Sağ Tık - Özellikleri Seçin

Sayfanın sol tarafında DOSYA'yı seçin

OWNER kutusunda, içinde üç nokta (…) bulunan düğmeyi seçin

Şimdi kullanıcının sa'yı seçin ve Tamam'a tıklayın


0

Bunu daha yeni yaşadım. Bu sayfadaki önerilerin yanı sıra SQL Authority önerilerini (aynı şey) okudum ve yukarıdakilerin hiçbiri işe yaramadı.

Sonunda hesabı kaldırdım ve yeniden yarattım (aynı kullanıcı adı / şifre ile). Aynen böyle, tüm sorunlar ortadan kalktı.

Maalesef bu, neyin yanlış gittiğini bilmediğim için başka hiçbir şeyi paylaşamayacağım anlamına geliyor.


0

1. Veritabanınıza sağ tıklayın, 2. Ardından özellikleri seçin. 3. Microsoft sql 2008 ile çalışıyorsanız, uyumluluk seviyelerinde sql 2008 [100] seçeneğini seçin.

4. Ardından dosyayı seçin ve sahibinin metin kutusuna (sa) yazın

% 100 benim için çalışıyor.


0

Bu sorunları çözmenin daha kolay bir yolu, veritabanınızın adına sağ tıklamak, "Yeni Sorgu" yu seçmek, "exec sp_changedbowner 'sa" yazmak ve sorguyu yürütmektir. O zaman gitmen iyi olacak.


0

microsofft sql server management studio'ya yönetici olarak sağ tıklama girmeli ve yönetici olarak çalıştırmalısınız


0

Sadece sorgu düzenleyicide çalıştırmanız gerekir ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [domain \ account];


-3

Asıl sorun, varsayılan sahibin (dbo) kendisiyle eşlenmiş bir oturum açma bilgilerine sahip olmamasıdır. Sa oturumunu veritabanı sahibiyle eşlemeye çalışırken "Kullanıcı, grup veya rol" dbo "şeklinde başka bir hata aldım zaten var ... ". Ancak bu kodu denerseniz aslında işe yarayacaktır:

EXEC sp_dbcmptlevel 'yourDB', '90';

Git

VERİTABANI ÜZERİNDEKİ YETKİ DEĞİŞTİRİN :: sizinDB'niz "oturumunuz" a

Git

[yourDB'nizi] kullanın

Git

KULLANICI OLARAK YÜRÜT = N'dbo 'GERİ DÖN

Git


-3

Veritabanınıza sağ tıklayın, ardından özellikleri seçin. Microsoft sql 2008 ile çalışıyorsanız uyumluluk seviyelerinde 2008 yerine sql 2005 [90] seçeneğini seçin. Daha sonra dosyayı seçin ve sahibinin metin kutusuna (sa) yazın. muhtemelen işe yarayacak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.