Я хочу создать роль базы данных сервера SQL, которая является точной копией роли db_owner, но не должна иметь доступа к нескольким таблицам. ... Это возможно?
Нет. У db_owner слишком много прав администратора, чтобы вы не могли получить доступ к нескольким таблицам. Если вы хотите, чтобы пользователь имел доступ ко всем текущим и будущим объектам в базе данных, кроме нескольких, вы можете сделать это, используя GRANT уровня базы данных и DENY :
DENY
Запрещает разрешение принципалу. Запрещает этому участнику наследовать разрешение через членство в его группе или роли. DENY имеет приоритет над всеми разрешениями, за исключением того, что DENY не применяется к владельцам объектов или членам предопределенной роли сервера sysadmin. Примечание по безопасности Членам фиксированной серверной роли sysadmin и владельцам объектов нельзя отказывать в разрешениях.
например:
create role foo
grant select, insert, update, delete, execute to foo --grant on whole database
deny select, insert, update, delete on dbo.secret to foo --deny on a single object
deny select, insert, update, delete, execute on schema::admin to foo ----deny on a whole schema