我有一个计划任务(在 Windows 任务计划程序中),它使用 SMO(Windows 身份验证)连接到 SQL Server 并创建数据库备份。到目前为止,此任务是在管理员帐户下运行的,我想将其更改为使用系统帐户。
我改变了计划任务,令我惊讶的是,它竟然能够正常工作。
我想了解为什么情况是这样的,系统是Windows Server 2012 R2,数据库是SQL Server 2012 (SP1) Express Edition,标准安装,添加一个SQL Auth用户。
在 SSMS 中,这些是登录名及其关联的服务器角色:
- ##MS_PolicyEventProcessingLogin##(已禁用)
- ##MS_PolicyTsqlExecutionLogin##(已禁用)
- MyServer\Administrator(公共,系统管理员)
- MySqlAuthUser(公共)
- BUILTIN\Users(公开)
- NT AUTHORITY\SYSTEM(公共)
- NT SERVICE\MSSQLSERVER(公共,系统管理员)
- NT SERVICE\SQLWriter(公共,系统管理员)
- NT SERVICE\Winmgmt(公共,系统管理员)
- sa(公共,系统管理员)
数据库本身具有以下用户及其角色:
- MySqlAuthUser(登录 MySqlAuthUser)(db_owner)
- dbo (登录 sa) (db_owner)
- 客人(已禁用)
- 信息架构(已禁用)
- 系統(已禁用)
查看用户 NT AUTHORITY\SYSTEM 的“有效权限”得到以下输出:
- 修改任何可用性组
- 连接 SQL
- 创建可用性组
- 查看任何数据库
- 查看服务器状态
为什么 NT AUTHORITY\SYSTEM 有权备份数据库?我很高兴它有这个权限,但我真的很想了解为什么...
答案1
备份数据库的最低权限是PUBLIC
在服务器级别和DB_BACKUPOPERATOR
数据库级别。
在 SQL Server 2005 中,Microsoft建议不要NT AUTHORITY\SYSTEM
从 sysadmin 角色中删除:
NT AUTHORITY\SYSTEM 帐户也被授予 SQL Server 登录名。NT AUTHORITY\SYSTEM 帐户在 SYSADMIN 固定服务器角色中配置。不要删除此帐户或将其从 SYSADMIN 固定服务器角色中移除。Microsoft Update 和 Microsoft SMS 使用 NT AUTHORITY\SYSTEM 帐户将服务包和修补程序应用于 SQL Server 2005 安装。SQL Writer Service 也使用 NT AUTHORITY\SYSTEM 帐户。
2012 年的情况已不再如此。 我再次检查了我自己的 2012 Express 实例: NT AUTHORITY\SYSTEM
不是系统管理员。但是,SQL Service VSS Writer
是NT AUTHORITY\SYSTEM
以和身份运行是系统管理员。
我找不到任何链接来证明这就是为什么NT AUTHORITY\SYSTEM
允许备份数据库,但我相信情况确实如此。