Enquanto correndo
select * from sys.server_principals
para public
função, na coluna is_fixed_role
é mostrado 0
Mas a documentação afirma que é uma função de servidor fixa.
Embora seja declarado que public é um pouco diferente de outras funções, porque podemos atribuir permissões a ele. De qualquer forma, é mencionado como um papel fixo.
Alguém pode explicar esse dilema?
Público é apenas um pato estranho.
Mas para aplicar alguma continuidade retroativa à documentação, você pode dizer que todas essas funções incorporadas são "fixas" ou imutáveis de maneiras que as funções normais não são. As funções marcadas como
is_fixed_role
têm permissões fixas e associação alterável. Público tem associação fixa (todos) e permissões alteráveis.A coluna em sys.server_principals e sys.database_principals deve ser documentada para esclarecer isso.
Uma razão que eu posso pensar
why public is NOT a fixed role - is_fixed_role
é que as permissões podem ser alteradas.De BOL :
as outras permissões de funções de servidor fixas não podem ser alteradas.