En travaillant avec la sécurité dans SQL Server 2008, j'essaie d'accorder à un utilisateur des autorisations CREATE TABLE, mais uniquement dans un schéma spécifique. L'autorisation CREATE TABLE s'applique-t-elle uniquement au niveau de la base de données?
Puis-je limiter l'utilisateur à créer une table uniquement dans un schéma?
J'ai essayé:
USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO
et
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO
Mais, l'utilisateur n'est toujours pas en mesure de créer une table dans le schéma cible. Ce n'est que lorsque je lance ceci, que l'utilisateur peut créer une table:
USE [databasename]
GRANT CREATE TABLE to [username]
GO
la source
L'octroi de l'autorisation de créer des tables à un utilisateur spécifique dans une base de données spécifique nécessite non seulement des autorisations CREATE TABLE, mais également des autorisations ALTER sur le schéma, par exemple DBO.
Par exemple;
la source
Il n'y a rien sur une telle autorisation dans la documentation des autorisations applicables aux schémas en 2008 R2: http://msdn.microsoft.com/en-us/library/ms187940.aspx
Par conséquent, je conclurais: non, vous ne pouvez pas, créer une table ne peut être contrôlé qu'au niveau de la base de données (cela semble s'appliquer à tous les éléments sécurisables).
la source
Sûr que vous pouvez. Si vous avez utilisateur1, définissez également son schéma par défaut en tant qu'utilisateur1. Accordez à cet utilisateur les autorisations CREATE TABLE in database. C'est ça. user1 peut uniquement créer des tables dans le schéma user1.
la source