Ich arbeite mit Sicherheit in SQL Server 2008 und versuche, einem Benutzer CREATE TABLE-Berechtigungen zu erteilen, jedoch nur innerhalb eines bestimmten Schemas. Gilt die Berechtigung CREATE TABLE nur auf Datenbankebene?
Kann ich den Benutzer darauf beschränken, Tabellen nur innerhalb eines Schemas zu erstellen?
Ich habe es versucht:
USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO
und
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO
Der Benutzer kann jedoch immer noch keine Tabelle innerhalb des Zielschemas erstellen. Erst wenn ich das starte, kann der Benutzer eine Tabelle erstellen:
USE [databasename]
GRANT CREATE TABLE to [username]
GO
quelle
Das Erteilen der Berechtigung zum Erstellen von Tabellen für einen bestimmten Benutzer in einer bestimmten Datenbank erfordert nicht nur CREATE TABLE-Berechtigungen, sondern auch ALTER-Berechtigungen für das Schema, z. B. DBO.
Beispielsweise;
quelle
In der Dokumentation der Berechtigungen für Schemas in 2008 R2 ist nichts über eine solche Berechtigung enthalten: http://msdn.microsoft.com/en-us/library/ms187940.aspx
Daher würde ich folgern: Nein, das können Sie nicht. Die Erstellung einer Tabelle kann nur auf Datenbankebene gesteuert werden (dies scheint für alle Sicherheitselemente zu gelten).
quelle
Sicher kannst du. Wenn Sie Benutzer1 haben, definieren Sie das Standardschema auch als Benutzer1. Gewähren Sie diesem Benutzer die Berechtigung CREATE TABLE in database. Das ist es. user1 kann nur Tabellen innerhalb des user1-Schemas erstellen.
quelle