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?
alterauthorizationonschema::YourSchemaName
to dbo
go
dropuser 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ąć).
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:
Jeśli nie wiesz, jakie schematy posiada Użytkownik, sprawdź jego właściwości.
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).
dbo
schemat, zmieniamy autoryzację nadbo
zleceniodawcę. Może to być dowolna jednostka główna bazy danych.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:
W szczegółach Object Explorer możesz zobaczyć listę schematów i właścicieli:
Jeśli nie wiesz, jakie schematy posiada Użytkownik, sprawdź jego właściwości.
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”.
i możesz zmienić właściciela schematu na dbo (lub tego, który jest najbardziej odpowiedni).
źródło