4 Stimmen

Warum erstellt SQL Server Schemas für die ersten DB-Rollen?

Warum erstellt SQL Server Schemata für die anfänglichen DB-Rollen, wie db_accessadmin, db_datareader usw.? Ich verstehe die Rollen und warum es sie gibt, aber ich verstehe nicht, warum sie bei der Erstellung der Datenbank mit Schemata versehen werden. Verwendet sie jemand? Ich kann mir nicht vorstellen, dass Microsoft das Hinzufügen von Tabellen zu diesen Rollen empfiehlt. Ich kann mir nicht vorstellen, eine Mitarbeiter- oder Produkttabelle zu db_datawriter hinzuzufügen. Gibt es eine Art versteckter Systemobjekte, die ihnen gehören?

4voto

Damien_The_Unbeliever Punkte 227101

Andere haben von Legacy/Abwärtskompatibilität gesprochen, ohne dies wirklich zu erklären.

Mit der Einführung von SQL Server 2005 wurde Folgendes eingeführt Trennung von Benutzer und Schema . Vor dieser Zeit war jedem Benutzer und jeder Rolle implizit ein gleichnamiges Schema zugeordnet (und es gab keine Möglichkeit, Schemata zu erstellen, außer durch das Anlegen von Benutzern oder Rollen).

Für die eingebauten Rollen, die es in den 2000er (oder früheren) Versionen von SQL Server gab, war also immer ein Schema in der Datenbank mit demselben Namen wie die Rolle "verfügbar". Daher kann es sein, dass Code in der Annahme geschrieben wurde, dass solche Schemata existieren; spätere Versionen von SQL Server stellen sicher, dass dies immer noch der Fall ist, um zu vermeiden, dass solcher Code beschädigt wird.

1voto

gbn Punkte 407102

Vermächtnis.

Sie sollten explizite GRANT (z.B. GRANT ALTER USER TO ...) verwenden, anstatt die alten festen Datenbankrollen zu benutzen.

Wenn Sie sp_grantdbaccess erhalten Sie auch ein Schema erstellt: Sie sollten die BENUTZER ANLEGEN

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X