Microsoft SQL Server 2017 (RTM-CU16)
Ao tentar atualizar estatísticas em um usuário que é membro da db_owner
função de banco de dados via
EXEC sp_updatestats;
SQL Server lança um erro:
Msg 15247, Level 16, State 1, Procedure sp_updatestats, Line 15 [Batch Start Line 0] O usuário não tem permissão para executar esta ação.
Embora a MS aqui afirme que "propriedade do banco de dados (dbo)" é suficiente, parece que não é.
Você não entendeu a frase
"propriedade do banco de dados" significa que este login possui este banco de dados.
Isso não é o mesmo que "é um membro de
db_owner database role
"Owner
de um banco de dados é um únicologin
, enquanto pode haver quantos db_owners você quiser.E, de fato, se você executar
nas primeiras linhas você encontrará:
Isso controla se o executor é um membro da
sysadmin
função de servidor ouowns
este banco de dados:suser_sid() <> @dbsid
where@dbsid
isowner_sid
of currentdatabase
.Para descobrir o dono de algum banco de dados você deve executar
E você também pode encontrá-lo usando o SSMS:
Ocorre que esse
sp_updatestats
comportamento é algum tipo de bug. Uma maneira de resolvê-lo é usar outro sp e concederexecute
permissão ao usuário (se nãodb_owner
):