La TRUSTWORTHYconfiguración puede ser bastante peligrosa si no tiene cuidado y, excepto en circunstancias específicas, la recomendación es mantenerla apagada. Sin embargo, de manera predeterminada, la MSDBbase de datos se ha TRUSTWORHTYconfigurado ONde manera predeterminada. Tengo curiosidad por qué?
He leído esta entrada en BOL
Nota De forma predeterminada, la configuración TRUSTWORTHY está activada para la base de datos MSDB. La alteración de esta configuración de su valor predeterminado puede provocar un comportamiento inesperado por parte de los componentes de SQL Server que usan la base de datos MSDB.
Pero tengo curiosidad por los detalles. ¿Por qué específicamente MSDBnecesita TRUSTWORTHYactivarse? ¿Qué funciones lo usan?
sql-server
sql-server-2008-r2
sql-server-2012
sql-server-2014
security
Kenneth Fisher
fuente
fuente

TRUSTWORTHYapagar paramsdbver qué deja de funcionar y tendrá al menos parte de la respuesta :). Pensé que BACKUP tendría problemas, pero lo intenté y lo logré.Respuestas:
Hay docenas de objetos en
msdbesa referencia a lamasterbase de datos.Si msdb no estuviera marcado como
TRUSTWORTHY, entonces los usuarios necesitarían permiso tanto para elmsdbobjeto con el que están interactuando, como para elmasterobjeto al que se hace referencia.Por ejemplo, los usuarios de msdb que obtienen permisos a través del rol de base de datos SQLAgentUserRole tienen permiso de ejecución en
msdb.dbo.sp_enum_sqlagent_subsystems. La pila de llamadas para ese procedimiento finalmente llega amaster:Si
msdbno está marcado comoTRUSTWORTHY, entonces los usuarios que forman parte de la función de base de datos SQLAgentUserRole TAMBIÉN necesitarían ejecutar permisomaster.dbo.xp_instance_regread.Técnicamente hablando, es posible eliminar la
TRUSTWORTHYconfiguraciónmsdby, en su lugar, otorgar permisos específicosmaster. Sin embargo, esos permisos requeridos no están documentados ni son compatibles.fuente