Podmiot główny bazy danych jest właścicielem schematu w bazie danych i nie można usunąć komunikatu

28

Próbuję usunąć podmiot główny z bazy danych, ale nie mogę, ponieważ jest on właścicielem schematu. Kiedy idę do edycji użytkownika, pole do odznaczenia schematów jest niebieskie i nie można go usunąć. Jak mogę usunąć zleceniodawcę z tych schematów?

rsteckly
źródło

Odpowiedzi:

31

Wypróbuj T-SQL, aby to zrobić:

alter authorization
on schema::YourSchemaName
to dbo
go

drop user TheUserYouWantToDelete
go

Nie możesz upuścić podmiotu głównego, który jest właścicielem schematu, więc ALTER AUTHORZATIONzmiany posiadanego schematu (użyłem YourSchemaName, ale oczywiście zastąpienie go posiadanym schematem w bazie danych) na dbo(podobnie, możesz zmienić własność na dowolną zasadę, której potrzebujesz w swoim środowisko). To pozwoli ci usunąć użytkownika, który wcześniej był właścicielem schematu (na przykład cele, z których korzystałem TheUserYouWantToDelete, ale będzie to teraz nie-właściciel, którego chcesz usunąć).

Thomas Stringer
źródło
Okej, więc to zadziałało. Jednak jestem trochę zdezorientowany, dlaczego. Dlaczego muszę autoryzować schemat na inny schemat? Może muszę przejrzeć schematy ...
rsteckly,
1
@rsteckly Uproszczony, autoryzacja = własność. Jeśli możesz usunąć użytkownika, który jest właścicielem schematu, schemat nie byłby prawidłowy, ponieważ właściciel już nie istnieje. Wyobraź sobie, że możesz usunąć klienta, który złożył zamówienie. Co oznacza identyfikator klienta w tabeli zamówień, jeśli nie ma już wskazanego klienta? Gdzie mam wysłać zamówienie?
Aaron Bertrand
Przepraszam, mój przykład nie został dobrze wyjaśniony. Nie zmieniamy autoryzacji na dboschemat, zmieniamy autoryzację na dbozleceniodawcę. Może to być dowolna jednostka główna bazy danych.
Thomas Stringer
30

Sposób T-SQL działa. Dzięki http://zarez.net/?p=179 znalazłem sposób SSMS, aby to zrobić (UI).

Aby zmienić właściciela schematu z Sql Server Management Studio:

Expand your database -> Security -> Schemas

W szczegółach Object Explorer możesz zobaczyć listę schematów i właścicieli:

wprowadź opis zdjęcia tutaj

Jeśli nie wiesz, jakie schematy posiada Użytkownik, sprawdź jego właściwości.

wprowadź opis zdjęcia tutaj

Otwórz właściwości schematu, którego właścicielem jest użytkownik, i kliknij „Wyszukaj”, aby znaleźć nowego właściciela. Jeśli nie znasz nowego właściciela, możesz „Przeglądaj”.

Properites -> Search -> Browse

i możesz zmienić właściciela schematu na dbo (lub tego, który jest najbardziej odpowiedni).

wprowadź opis zdjęcia tutaj

woodvi
źródło
1
Sposób T-SQL jest znacznie lepszy i elastyczny. Robienie tego za pomocą GUI zawsze powoduje ból!
Kin Shah
Jestem zwolennikiem T-SQL, także dlatego, że można go używać w skryptach.
woodvi
2
Uwaga: F7 to skrót do wyświetlania szczegółów, jeśli się nie pojawi
Simon_Weaver