Discussion:
Schemabesitzer was hat das für Auswirkungen
(zu alt für eine Antwort)
Frederick Steinke
2009-12-10 21:32:10 UTC
Permalink
Hallo ich habe eine hoffentlich simple Frage aber ich sehe den Wald vor
lauter Bäumen nicht mehr.

Was hat es für einen Vorteil wenn ein User ein Schema besitzt. Also ich
meine was darf er was andere nicht machen? Habe alles mögliche durchsucht
und immer nur Texte gefunden wie ... der User ist Besitzer des Schemas ...
etc.

Dankbar bin ich auch wenn mir jemand einen Linke senden kann wo genau das
erläutert ist. Also nicht was ist ein Schema ... das ist klar. sondern was
darf ein Schmabeitzer.

Wäre toll wenn mir da jemand Licht ins Dunkel bringen könnte.

Danke für jeden TIp.

Gruß Frederick
Christoph Muthmann
2009-12-11 08:20:42 UTC
Permalink
Post by Frederick Steinke
Hallo ich habe eine hoffentlich simple Frage aber ich sehe den Wald
vor lauter Bäumen nicht mehr.
Was hat es für einen Vorteil wenn ein User ein Schema besitzt. Also
ich meine was darf er was andere nicht machen? Habe alles mögliche
durchsucht und immer nur Texte gefunden wie ... der User ist Besitzer
des Schemas ... etc.
Dankbar bin ich auch wenn mir jemand einen Linke senden kann wo genau
das erläutert ist. Also nicht was ist ein Schema ... das ist klar.
sondern was darf ein Schmabeitzer.
Wäre toll wenn mir da jemand Licht ins Dunkel bringen könnte.
Danke für jeden TIp.
Hallo Frederick,
was ein Schema bringt hängt von verschiedenen Einstellungen ab. Vergibst Du
Rechte auf Datenbank-Ebene, sind diese automatisch für jedes Schema gültig.
Beispiel Mitglieder der Rolle db_datareader dürfen alle Tabellen lesen.
http://msdn.microsoft.com/de-de/library/ms187940.aspx
GRANT-Schemaberechtigungen (Transact-SQL)

CONTROL SCHEMA beinhaltet alle einzelnen Schema-Berechtigungen.

Vergibt man also keine datenbankweiten Berechtigungen kannst Du die Schemata
verwenden, um Tabellen vor Zugriff zu schützen. Du kannst für einzelne
Objekte Rechte vergeben, für Schemata oder für die Datenbank.

Schaust Du Dir hier die Berechtigungsmöglichkeiten an, findest Du z. B. für
SCHEMA kein CREATE TABLE.
http://msdn.microsoft.com/de-de/library/ms191291.aspx#_permissions
Berechtigungen (Datenbankmodul)
Das müßte man also auf Datenbank-Ebene vergeben, wobei man in der Regel ja
keine Entwickler auf produktive Systeme läßt!

Ich verwende Schemata in der Regel um logische Einheiten innerhalb einer
Datenbank abzutrennen. Z. B. Buchhaltung, Personal, Einkauf

Ausserdem kann man Schemata dazu verwenden, diese als Default-Schema bei
einem User anzugeben. ein Create Table oder Select landet automatisch in dem
Default-Schema. Andere müßten das Schema dort explizit angeben.



Einen schönen Tag noch,
Christoph
--
Microsoft SQL Server MVP
http://www.insidesql.org
Robert Miller
2009-12-11 08:30:20 UTC
Permalink
Hallo Christoph,
[...]
Post by Christoph Muthmann
Post by Frederick Steinke
Was hat es für einen Vorteil wenn ein User ein Schema besitzt. Also
ich meine was darf er was andere nicht machen?
[...]
Post by Christoph Muthmann
Post by Frederick Steinke
Danke für jeden TIp.
Hallo Frederick,
was ein Schema bringt hängt von verschiedenen Einstellungen ab. Vergibst Du
Rechte auf Datenbank-Ebene, sind diese automatisch für jedes Schema gültig.
Beispiel Mitglieder der Rolle db_datareader dürfen alle Tabellen lesen.
http://msdn.microsoft.com/de-de/library/ms187940.aspx
GRANT-Schemaberechtigungen (Transact-SQL)
ich denke das ist nicht genau das was Frederik meinte, sondern (wenn ich
es richtig verstanden habe):

-> Du kannst ein Schema erstellen, kein Problem.
-> Ist auch klar was ein Schema ist und wofür man es verwenden kann.
-> Du kannst ein Benutzer als Schema-Besitzer eintragen, alles kein Problem.

Frage ist nun (was mich auch brennend interessieren würde):
-> Was ist jetzt so besonderes an diesem Benutzer, wenn er jetzt ein
Schema besitzt (bis auf die Tatsache dass ich den Benutzer nicht wieder
entfernen kann).

Oder anders gefragt: Macht es ggf. Sinn immer den dbo-Benutzer einer
Datenbank als Schemenbesitzer einzutragen, da dieser Benutzer i.a.R
sowieso nie gelöscht wird?

Das ist eine gute und berechtigte Frage... bin gespannt auf die Antworten.

Robert
Elmar Boye
2009-12-11 09:08:00 UTC
Permalink
Hallo Robert,
[...]
Post by Frederick Steinke
Was hat es für einen Vorteil wenn ein User ein Schema besitzt. Also
ich meine was darf er was andere nicht machen?
[...]
-> Was ist jetzt so besonderes an diesem Benutzer, wenn er jetzt ein Schema besitzt (bis auf die Tatsache dass ich den Benutzer
nicht wieder entfernen kann).
Der Schema-Besitzer ist quasi ein Datenbankbesitzer (dbo) im kleinen.
Er kann das Schema ähnlich verwalten, wie es früher nur auf der Ebene
des Datenbank Besitzers ging -> CONTROL Berechtigung:
http://msdn.microsoft.com/de-de/library/ms191291.aspx

Und stellt insofern ein sicherungsfähiges Gruppierungsmerkmal
für Datenbankobjekte dar.

So zumindest wenn man das Schema im Sinne von ANSI-SQL verwendet.
Beim SQL Server sind noch einige Abwärtskompatibilitäten vorhanden,
siehe CREATE SCHEMA: http://msdn.microsoft.com/de-de/library/ms189462.aspx
die man dabei ausser Acht lassen sollte, da sie langfristig entfallen werden.
Oder anders gefragt: Macht es ggf. Sinn immer den dbo-Benutzer einer Datenbank als Schemenbesitzer einzutragen, da dieser Benutzer
i.a.R sowieso nie gelöscht wird?
Das kann man machen, wenn man die zusätzliche Sicherungsebene nicht
braucht und das Schema als reine Gruppierung verwendet.

Will man Schemas (zu einem späteren Zeitpunt) als Sicherungsebene einsetzen,
sollte man dort so vorgehen wie es der "dbo" vormacht.
Dort ist es ein Benutzer, dem bei der Erstellung ein Konto zugeordnet wird.
Und auch beim Schema sollte man einen eigenen (Pseudo) Benutzer erstellen.

Die Festlegung auf eine Schema-Ordnung sollte auf lange Sicht geplant werden.
Denn sobald Anwendungsprogramme darauf zugreifen, ist eine AdHoc-Änderung
kaum möglich.

Gruß Elmar

Loading...