Nie można zainstalować obiektów obsługujących diagram bazy danych… brak prawidłowego właściciela

132

Próbowałem utworzyć diagram bazy danych w SQL Server 2008, ale pojawia się błąd:

Nie można zainstalować obiektów obsługujących diagram bazy danych, ponieważ ta baza danych nie ma prawidłowego właściciela. Aby kontynuować, najpierw użyj strony Pliki w oknie dialogowym Właściwości bazy danych lub instrukcji ALTER AUTHORIZATION, aby ustawić właściciela bazy danych na prawidłowy login, a następnie dodaj obiekty obsługi diagramu bazy danych.

Następnie spróbowałem następujących rzeczy:

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

Pojawia się następny błąd:

Msg 15404, poziom 16, stan 11, wiersz 1 Nie można uzyskać informacji o grupie / użytkowniku Windows NT „WIN-NDKPHUPPNFL \ Administrator”, kod błędu 0x534.

Problem polega na tym, że nazwa komputera zmieniła się na „DevPC”. Zmieniłem to również w skrypcie aktualizacji, ale nadal ten sam błąd 15404.

Co mogę zrobić, aby naprawić ten irytujący błąd?

Rookian
źródło
4
Ten problem pojawia się również podczas przywracania kopii zapasowej z innego komputera.
Tim Abell,
Podczas przywracania bazy danych z innego komputera można naprawić ten błąd, uruchamiając dwie komendy: 1) alter authorization on database::[db_name] to [sa], a następnie 2) ponownie uruchom tę samą komendę i zamień [sa]ją na użytkownika, który był właścicielem bazy danych natychmiast po odtworzeniu.
James L.

Odpowiedzi:

182

W przypadku własności bazy danych należy rozważyć konto uwierzytelniania SQL; wtedy nie musisz się martwić o pojawianie się i odchodzenie kont, przenoszenie baz danych lub instancji na inne serwery i następną zmianę nazwy komputera. Mam kilka systemów, w których używamy:

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

Lub jeśli chcesz zmienić właściciela na to lokalne konto administratora, powinno to być:

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

Ponieważ zmiana nazwy komputera na DevPCwyeliminowała konto lokalne, które było nazwane, WIN-ND...\Administratora także unieważniło obecnego właściciela bazy danych.

Jeśli SELECT @@SERVERNAME;nie jest dokładny (powinien powiedzieć DevPC), to w celu upewnienia się, że zmiana nazwy serwera została przyjęta w programie SQL Server, możesz również wykonać następujące czynności:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO
Aaron Bertrand
źródło
pokazuje: „WIN-NDKPHUPPNFL” Użyłem twojej instrukcji sql i działa ... ale czy ta konfiguracja jest prawidłowa, czy muszę zrobić coś więcej?
Rookian,
Cóż, to naprawdę zależy. Jeśli chcesz, aby Twoja baza danych była własnością użytkownika domeny / grupy roboczej Windows, prawdopodobnie masz więcej do zrobienia. Osobiście uważam to za problematyczne. Może najpierw przeczytaj to: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand
1
Czy są jakieś problemy z ustawieniem go na, sajeśli masz wyłączone uwierzytelnianie sql?
Tim Abell
@AaronBertrand Witam Mam pytanie. Domyślnie jeśli tworzymy bazę danych właścicielem bazy danych jest bieżący użytkownik windowsa a jeżeli aktualny użytkownik windowsa również jest administratorem. Dlaczego musimy zmienić to na logowanie do uwierzytelniania Sql. Rzeczywiście nie mogę zrozumieć tego błędu. Jeśli zmienimy to na login, to działa. Ale logowanie administratora do systemu Windows jest również administratorem systemu. Czy mógłbyś poprosić o pomoc?
UfukSURMEN
Przywróciłem kilka baz danych i wszystkie z nich wyświetlały błąd w pytaniu OP, mimo że właściwości każdej bazy danych wskazywały prawidłowego użytkownika. Użyłem pierwszego polecenia, aby zmienić go na, [sa]a następnie zmieniłem go z powrotem na użytkownika, który powiedział, że był wcześniej, i altówka, żadnych więcej błędów. Nie jestem pewien, dlaczego przywrócenie bazy danych nie ustawiło poprawnie właściciela bazy danych ...
James L.
208

W SQL Server Management Studio wykonaj następujące czynności:

  1. Kliknij prawym przyciskiem myszy swoją bazę danych, wybierz właściwości
  2. Przejdź do strony opcji
  3. Z listy rozwijanej po prawej stronie oznaczonej „Poziom zgodności” wybierz „SQL Server 2005 (90)” 3-1. wybierz „SQL Server 2008”, jeśli pojawi się błąd porównywalności.
  4. Przejdź do strony Pliki
  5. Wpisz „sa” w polu tekstowym właściciela. 5-1 lub kliknij wielokropek (...) i wybierz prawowitego właściciela.
  6. Kliknij OK

po wykonaniu tej czynności będziesz mieć teraz dostęp do diagramów bazy danych.

wprowadź opis obrazu tutaj

Israel Margulies
źródło
2
Czy jest jakiś powód, dla którego baza danych NIE powinna mieć właściciela? Wchodzę do bazy danych produktów innej osoby i nie ma ustawionego właściciela. Czy to było zamierzone? (U klienta nie ma nikogo, kto by wiedział).
Jason Kleban
Baza danych powinna mieć właściciela. Wybór „sa” zamiast prawowitego właściciela jest po prostu łatwym wyborem, aby naprawić powyższy błąd. Ale wybór prawowitego właściciela również rozwiązał problem.
Lesly Revenge
3
Czy ktoś mógłby wyjaśnić cel zmiany poziomu zgodności w tych krokach? Samo ustawienie właściciela plików na „sa” było dla mnie wystarczające (nawet jeśli nie mam włączonej autoryzacji sql, co dziwne).
Tim Abell,
To zadziałało dla mnie. Musiałem jednak usunąć mojego użytkownika z Databasename> Security.
Gezim
To zadziałało dla mnie, na SQL Server 2017, przy użyciu Management Studio 17.9, bez potrzeby kroku 1
Giorgio Barchiesi
7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

To działa.

RafiO
źródło
5

Wpisz „SA” zamiast „sa” w polu tekstowym właściciela. To zadziałało dla mnie.

Adarsh ​​VC
źródło
5

Miałem ten sam problem.
Chciałem zobaczyć mój diagram, który stworzyłem tego samego dnia w pracy, w domu. Ale nie mogłem z powodu tej wiadomości.
Dowiedziałem się, że właścicielem bazy danych był użytkownik mojego komputera - zgodnie z oczekiwaniami. ale ponieważ komputer znajduje się w domenie firmy, a ja nie mam połączenia z siecią firmową, baza danych nie mogła ustalić właściciela.

Więc zmieniłem właściciela na lokalnego użytkownika i zadziałało !!
Mam nadzieję, że to komuś pomoże.

Aby zmienić użytkownika, kliknij prawym przyciskiem myszy bazę danych, właściwości, pliki, właściciela

PhpLou
źródło
3

To naprawiło to dla mnie. Ustawia właściciela znalezionego w sekcji „pliki” okna właściwości bazy danych i jest według skryptu przygotowanego przez Management Studio.

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

Zgodnie z dokumentacją sp_changedbowner jest to teraz przestarzałe.

Na podstawie odpowiedzi Izraela. Odpowiedzią Aarona jest niezalecana odmiana tego.

Tim Abell
źródło
3

Wybierz bazę danych - Kliknij prawym przyciskiem myszy - Wybierz Właściwości

Wybierz PLIK w lewej części strony

W polu WŁAŚCICIEL wybierz przycisk z trzema kropkami (…)

Teraz wybierz użytkownika i kliknij OK

Anil Rana
źródło
0

Właśnie tego doświadczyłem. Przeczytałem sugestie na tej stronie, a także sugestie SQL Authority (czyli to samo) i żadna z powyższych nie zadziałała.

W końcu usunąłem konto i utworzyłem je ponownie (z tą samą nazwą użytkownika i hasłem). Tak po prostu wszystkie problemy zniknęły.

Niestety, oznacza to, że nie wiem, co poszło nie tak, więc nie mogę udostępniać niczego innego.

Dave
źródło
0

1. kliknij prawym przyciskiem myszy swoją bazę danych, 2. następnie wybierz właściwości. 3. Wybierz opcję w poziomach zgodności wybierz sql 2008 [100], jeśli pracujesz z Microsoft sql 2008.

4. Następnie wybierz plik i wpisz (sa) w polu tekstowym właściciela

100% działa na mnie.

Jefferson X Masonic
źródło
0

Łatwiejszym sposobem rozwiązania tego problemu byłoby kliknięcie prawym przyciskiem myszy nazwy bazy danych, wybranie „Nowa kwerenda”, wpisanie „exec sp_changedbowner 'sa'” i wykonanie zapytania. Wtedy będziesz gotowy.

Lebone Mcdonald
źródło
0

musisz wejść jako administrator, kliknij prawym przyciskiem myszy, aby uruchomić studio zarządzania serwerem microsofft sql i uruchomić jako administrator

abdelnaser rafat
źródło
0

Wystarczy wykonać to w edytorze zapytań ALTER AUTORYZACJA W BAZIE DANYCH :: YourDatabase TO [domena \ konto];

Nui San
źródło
-3

Prawdziwym problemem jest to, że domyślny właściciel (dbo) w ogóle nie ma zmapowanego loginu. Kiedy próbowałem zmapować login sa do właściciela bazy danych, otrzymałem kolejny błąd z informacją "Użytkownik, grupa lub rola 'dbo' już istnieje ... ”. Jeśli jednak wypróbujesz ten kod, będzie on faktycznie działał:

EXEC sp_dbcmptlevel 'yourDB', '90';

udać się

ZMIANA AUTORYZACJI W BAZIE DANYCH :: yourDB NA „yourLogin”

udać się

użyj [yourDB]

udać się

EXECUTE AS USER = N'dbo 'REVERT

udać się

Vandana
źródło
-3

kliknij prawym przyciskiem myszy swoją bazę danych, a następnie wybierz właściwości. wybierz opcję w poziomach zgodności wybierz sql 2005 [90] zamiast 2008, jeśli pracujesz z Microsoft sql 2008. Następnie wybierz plik i wpisz (sa) w polu tekstowym właściciela. to prawdopodobnie zadziała

Ezzo gasmallah
źródło