Как SQL Server узнает, может ли пользователь моей базы данных обращаться к ресурсам в другой базе данных?

#sql-server #permissions #sid

#sql-server #разрешения #sid

Вопрос:

Я создал два входа: Login1 и Login2, первый из которых имеет роль системного администратора.

Затем я вхожу в систему с ними обоими и нахожу эти сценарии:

a. Login1: я могу читать данные в базе данных msdb.
b. Login2: я не могу читать данные в базе данных msdb.

Мне интересно узнать глубокую причину.

Это связано с разными разрешениями Login1 и Login2, но вопрос в том, как SQL Server внутренне знает, что Login1 имеет достаточно привилегий для доступа к msdb? Как разрешения работают внутри?

Комментарии:

1. sysadmin это роль уровня сервера, а не роль базы данных, и sysadmin может делать все на сервере. Что касается другого пользователя, если у него нет пользователя в базе данных msdb, у него будут только разрешения, которые общедоступная роль имеет в MSDB.

2. sysadmin участники роли имеют полные права доступа к экземпляру и автоматически являются dbo пользователями во всех базах данных. У других пользователей должен быть пользователь, созданный в базе данных для входа (если не включен гостевой пользователь базы данных).