Błąd podczas zmiany własności bazy danych ze strony Pliki w oknie dialogowym właściwości bazy danych

10

Przywróciłem bazę danych i utworzyłem nowego użytkownika (tego samego użytkownika, z którego się zalogowałem) jako właściciela_db. Teraz, gdy chciałem zobaczyć, czy baza danych ma błąd

Obiektów obsługujących diagram bazy danych nie można zainstalować, ponieważ ta baza danych nie ma poprawnego właściciela. Aby kontynuować, najpierw użyj strony plików 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 bazy danych

Teraz, gdy próbowałem zmienić własność ze strony Pliki właściwości bazy danych, pojawia się błąd jako

Niepowodzenie zestawu właściciela dla bazy danych „ABC”. (Microsoft.SqlServer.SMO) Dodatkowe informacje: wystąpił wyjątek w SMO Proponowany nowy właściciel bazy danych James-PC \ James jest mapowany jako użytkownik James w tej bazie danych. Nazwa parametru: James-PC \ James ”

Pomóż mi rozwiązać problem, aby móc zobaczyć diagramy bazy danych na tym komputerze po przywróceniu kopii zapasowej bazy danych z innego systemu.

użytkownik 2826073
źródło

Odpowiedzi:

8

Właścicielem bazy danych jest login w sys.server_principals, który jest właścicielem bazy danych, zgodnie z jej identyfikatorem SID. Po przywróceniu może się łatwo zdarzyć, że login użyty do przywrócenia bazy danych nie jest loginem, który był poprzednim właścicielem bazy danych. (Jest to nawet bardziej prawdopodobne, gdy baza danych zostanie przeniesiona między serwerami).

Mogą więc występować trzy ustawienia, z którymi masz problem

  1. Identyfikator właściciela bazy danych nie jest równy identyfikatorowi sid właściciela bazy danych. Możesz to porównać z bazą danych ABC:

    WYBIERZ właściciela_sid Z sys.databases gdzie name = 'ABC';

    WYBIERZ sid z ABC.sys.database_principals GDZIE nazwa = 'dbo';

  2. Następnie pojawia się komunikat, że proponowana baza danych właściciel_sid istnieje również jako użytkownik w sys.database_principals. Wiemy to z komunikatu o błędzie dotyczącego mapowania proponowanego właściciela.

Więc twoje kroki to:

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

Upuściłeś użytkownika, który nie jest potrzebny, ponieważ tworzysz go jako dbo. Gdy będzie to niemożliwe, Twój login może zostać właścicielem bazy danych.

EDYCJA: Możesz także użyć SSMS, aby usunąć użytkownika Jamesa z bazy danych ABC. Następnie możesz wrócić do karty Plik właściwości bazy danych, aby ustawić właściciela bazy danych. (Przepraszam, mam skłonność do myślenia o skryptach.)

RLF
źródło
1
To interesujące, w Management Studio login, który został utworzony dbo, nie pojawia się w YOUR_DB / Security / Users,
joedotnot
-3
  1. baza danych prawym przyciskiem myszy
  2. nieruchomości
  3. Wybierz pliki
  4. popraw / ustaw właściciela (do yourpc \ you lub przeglądaj i wybierz klikając „...”)

działało to dla mnie w SQL Server Studio Management v17.1

użytkownik127505
źródło
2
Myślę, że dokładnie to nie działało dla nich.
dezso