设想:
我试图了解一个奇怪的情况。我有一个 SQL Server 2012,它使用相同的域帐户配置了数据库引擎和 SQL Server 代理。该域帐户不会添加到 SQL Server 登录。检查使用xp_logininfo 'Domain account', 'all'
并没有得到任何输出。我有一个更新数据库中的表的 SQL 服务器作业。那项工作运行良好。到目前为止,我的印象是必须在 SQL Server 登录中定义 SQL Server 代理帐户才能运行作业。但是,在这种情况下,作业运行良好,即使 SQL Server 代理登录未在 SQL Server 登录中定义。所以试图理解它是如何可能的。此外,由于作业更新表不知道它使用哪个用户/登录来更新表。作为测试,我将工作所有者更改为“sa”和非“sa”登录,在这两种情况下工作都可以正常工作。
所以我的问题是:
是否必须在 SQL Server 登录中定义 SQL Server 代理帐户才能运行作业?如果是,那么即使 SQL Server 登录名中没有 SQL Server 代理帐户的登录名,我的更新作业为何仍在运行。如果不是,它在内部是如何工作的?就像它用于启动 SQL 作业的帐户一样。
我的更新作业使用什么用户/登录名来更新表?
1. 是否必须在 SQL Server 登录中定义 SQL Server 代理帐户才能运行作业?
看到这个和这个。
SQL Server 代理作为名为 NT SERVICE\SQLSERVERAGENT 的 Windows 服务运行。NT SERVICE\SQLSERVERAGENT 登录是作为 SQL Server 代理的 Windows 进程连接到数据库引擎以读取 msdb 数据库以找出它应该做什么的方式;然后去做。这两个登录名都是 sysadmin 固定服务器角色的成员,因此他们可以在数据库引擎中执行任何操作。他们需要保持这种状态。
至于您用来运行服务的帐户,这很复杂,并且在每个版本的 SQL Server 中都发生了变化。简短的回答是,当进程试图到达当前 Windows 环境之外时,将使用您指定的帐户。但是在计算机中,授予域用户、服务和 Windows 组 SQLServerMSSQLUser$computername$MSSQLSERVER 的权限是混合的。
操作系统中有代理帐户默认获得的权限。详情在这里。
根据网上书籍:
但它不应该是本地管理组的成员。
2. 我的更新作业使用什么用户/登录名来更新表?
参考:https ://www.simple-talk.com/sql/database-administration/setting-up-your-sql-server-agent-correctly/
作业所有权是 SQL Server 代理中的一个重要概念。SQL Server 代理根据拥有作业的用户角色设置作业执行的安全上下文。默认情况下,无论作业所有权如何,SQL Server 代理都会在 SQL Server 代理服务帐户下执行作业步骤,或者在代理帐户的上下文中执行作业步骤。
此规则的例外是 T-SQL 作业步骤,它在作业所有者的安全上下文中执行。如果作业所有者是 sysadmin 角色的成员,则作业步骤将在 SQL Server 代理服务帐户的上下文中执行。
服务启动帐户定义运行 SQL Server 代理的 Microsoft Windows 帐户及其网络权限。SQL Server 代理作为指定的用户帐户运行。您可以使用 SQL Server 配置管理器为 SQL Server 代理服务选择一个帐户,您可以在其中从以下选项中进行选择:
内置帐户。您可以从以下内置 Windows 服务帐户列表中进行选择: 本地系统帐户。此帐户的名称是 NT AUTHORITY\System。这是一个功能强大的帐户,可以不受限制地访问所有本地系统资源。它是本地计算机上 Windows 管理员组的成员,因此是 SQL Server sysadmin 固定服务器角色的成员。
此帐户。允许您指定运行 SQL Server 代理服务的 Windows 域帐户。我们建议选择不是 Windows 管理员组成员的 Windows 用户帐户。但是,当 SQL Server 代理服务帐户不是本地管理员组的成员时,使用多服务器管理会受到限制。
注意:- 提供本地系统帐户选项只是为了向后兼容。本地系统帐户具有 SQL Server 代理不需要的权限。避免将 SQL Server 代理作为本地系统帐户运行。为提高安全性,请使用具有以下“Windows 域帐户权限”部分中列出的权限的 Windows 域帐户。
使用 management studio 连接 SQL Server 实例 右键单击该实例并选择
我们获得所有数据库的架构更改报告,从中我们可以获取用于删除/删除数据库的用户帐户。
如果您想了解有关删除/更新的表格信息的更多信息,那么您可以在此处
fn_dump_dblog
查看未记录的信息。如需更多信息,请点击此处和此处