You would assign the user to db_datareader
& db_datawriter
roles for the dbo
schema.
However, to allow the user to create and modify only new tables; you would have to create a different schema and assign, for example db_owner
permissions to this schema.
You should be aware though, that doing this may create problems as you can have two tables with the same name under different schemas. So you should ensure that your queries always state the owner of the object.
e.g.
dbo.MyTable
CustomSchema.MyTable
UPDATE:
Ok, I think these are the steps you need to take:
- Create a new Database Role e.g
db_ReportingRole
and add the relevant user to this role.
- Create a new Schema e.g
Reporting
and make db_ReportingRole
the owner of this schema.
- Assign the relevant
CREATE
, DROP
, etc permissions to the db_ReportingRole
- Ensure that the same user added previously is in the
db_datareader
and db_datawriter
roles for the dbo
schema.
This should then allow you to have a user that can read and write to dbo
schema but should be able to modify tables etc. However, because they in the db_ReportingRole
they should have full access to modify, create, drop etc table in the Reporting
schema. (Providing that you have assigned the correct permissions to the db_ReportingRole
I hope this works for you.