O que a função db_owner permite

14

Eu tenho tentado solucionar problemas de um logon que não é capaz de exibir determinadas tabelas em um banco de dados do SQL Server 2012. Ao fazer isso, percebo que não entendo direito o que a participação na db_ownerfunção permite. Eu posso entender os outros papéis como, db_datareader and db_datawritermas continuo confuso quanto ao que db_ownerpermite.

webworm
fonte

Respostas:

14

Consulte a referência no BOL para funções no nível do banco de dados :

db_owner

Os membros da função de banco de dados fixa db_owner podem executar todas as atividades de configuração e manutenção no banco de dados e também podem eliminar o banco de dados .

A maneira mais fácil de ver todas as permissões é usar a sys.fn_my_permissions()função Primeiro verifique se você é um membro de db_owner:

select
    rol.name
from sys.database_principals mem
inner join sys.database_role_members drm
on drm.member_principal_id = mem.principal_id
inner join sys.database_principals rol
on drm.role_principal_id = rol.principal_id
where mem.principal_id = user_id();

Agora liste todas as permissões efetivas do banco de dados:

select *
from sys.fn_my_permissions(null, 'database');

Isso deve ser granular o suficiente para seus propósitos. Algo a ser observado, sys.fn_my_permissions()retorna as permissões efetivas ; pense nisso como uma agregação.

Thomas Stringer
fonte
Isso significaria que o usuário que tem db_ownerassociação tem por padrão as mesmas permissões que db_readere db_writer?
webworm
4
Um membro da db_ownerfunção de banco fixo terá SELECT, INSERT, UPDATE, e DELETEpermissões no banco de dados. Entre muitas outras permissões, mas sim, isso está correto.
Thomas Stringer