Der Datenbankprinzipal besitzt ein Schema in der Datenbank und kann keine Nachricht löschen
28
Ich versuche, einen Principal aus der Datenbank zu löschen, kann dies jedoch nicht, da er ein Schema besitzt. Wenn ich den Benutzer bearbeite, ist das Kontrollkästchen zum Deaktivieren des Schemas jedoch blau und nicht entfernbar. Wie kann ich den Principal aus diesen Schemata entfernen?
alterauthorizationonschema::YourSchemaName
to dbo
go
dropuser TheUserYouWantToDelete
go
Sie können kein Haupt löschen , die ein Schemabesitzer ist, so das ALTER AUTHORZATIONdie im Besitz Schemaänderungen (I verwendet YourSchemaName, aber offensichtlich , dass in Ihrer Datenbank mit dem Besitz Schema ersetzen) zu dbo(ebenfalls, Sie Eigentum, was auch immer Haupt ändern können , müssen Sie Ihre Umgebung). Auf diese Weise können Sie den Benutzer löschen, der zuvor das Schema besaß (zum Beispiel zu den von mir verwendeten Zwecken TheUserYouWantToDelete, aber dies ist der Nicht-Eigentümer, den Sie löschen möchten).
Okay, das hat funktioniert. Ich bin jedoch ein wenig verwirrt, warum. Warum muss ich das Schema für ein anderes Schema autorisieren? Vielleicht muss ich die Schemata überprüfen ...
rsteckly
1
@rsteckly Vereinfacht, Autorisierung = Eigentum. Wenn Sie den Benutzer löschen könnten, dem das Schema gehört, wäre das Schema nicht gültig, da der Eigentümer nicht mehr vorhanden ist. Stellen Sie sich vor, Sie könnten einen Kunden löschen, der eine Bestellung aufgegeben hat. Was bedeutet die CustomerID in der Orders-Tabelle, wenn es keinen Kunden mehr gibt, auf den sie verweist? Wohin soll ich die Bestellung schicken?
Aaron Bertrand
Entschuldigung, mein Beispiel wurde nicht gut erklärt. Wir ändern nicht die Berechtigung für das dboSchema, sondern die Berechtigung für den dboPrincipal. Das könnte ein beliebiger Datenbankprinzipal sein.
So ändern Sie den Schemabesitzer in SQL Server Management Studio:
Expand your database-> Security -> Schemas
In den Details des Objekt-Explorers sehen Sie eine Liste der Schemas und der Eigentümer:
Wenn Sie nicht wissen, welche Schemas der Benutzer besitzt, überprüfen Sie die Eigenschaften des Benutzers.
Öffnen Sie die Eigenschaften des Schemas, dessen Eigentümer der Benutzer ist, und klicken Sie auf "Suchen", um einen neuen Eigentümer zu finden. Wenn Sie den neuen Besitzer nicht kennen, können Sie nach einem suchen.
Properites -> Search ->Browse
und Sie können den Schemabesitzer in dbo ändern (oder den am besten geeigneten).
dbo
Schema, sondern die Berechtigung für dendbo
Principal. Das könnte ein beliebiger Datenbankprinzipal sein.Der T-SQL-Weg funktioniert. Dank http://zarez.net/?p=179 habe ich den SSMS-Weg gefunden, um dies zu tun (UI).
So ändern Sie den Schemabesitzer in SQL Server Management Studio:
In den Details des Objekt-Explorers sehen Sie eine Liste der Schemas und der Eigentümer:
Wenn Sie nicht wissen, welche Schemas der Benutzer besitzt, überprüfen Sie die Eigenschaften des Benutzers.
Öffnen Sie die Eigenschaften des Schemas, dessen Eigentümer der Benutzer ist, und klicken Sie auf "Suchen", um einen neuen Eigentümer zu finden. Wenn Sie den neuen Besitzer nicht kennen, können Sie nach einem suchen.
und Sie können den Schemabesitzer in dbo ändern (oder den am besten geeigneten).
quelle