Limitare i permessi solo ad uno schema
Una volta fatto si dimostra ovvio e banale, ma siccome ci ho messo un po' di tempo per trovare come fare... Lo posto caso mai possa servire a qualcun altro.
La funzionalita' da implementare e' la seguente: su un database Sql2005 poter consentire ad alcuni utenti il pieno controllo su uno schema, inclusa la creazione, e la modifica delle tabelle, mentre sugli oggetti degli altri schema non devono poter operare in alcun modo (neanche leggere).
La soluzione consiste nel non assegnare all'utente alcun ruolo e dargli esplicitamente (tramite grant) il controllo dello schema su cui possono operare.
Supponendo che lo user alfa debba poter agire indisturbato solo sullo schema A1, le istruzioni saranno:
-- tolgo l'user da tutti i ruoli
exec
sp_droprolemember 'db_owner', 'alfa'
exec
sp_droprolemember 'db_accessadmin', 'alfa'
exec
sp_droprolemember 'db_backupoperator', 'alfa'
exec
sp_droprolemember 'db_datareader', 'alfa'
exec
sp_droprolemember 'db_datawriter', 'alfa'
exec
sp_droprolemember 'db_ddladmin', 'alfa'
exec
sp_droprolemember 'db_securityadmin', 'alfa'
-- gli do' pieni diritti sullo schema A1
GRANT
CONTROL ON SCHEMA::A1 TO Alfa ;