[SQL Server] 服务启动帐户

时间:2022-04-27 17:42:03

在SQL Server 2000中,Microsoft SQL Server 和 SQL Server 代理程序都作为 Windows 服务启动和运行。这些服务出现在"管理工具"->"服务"对话框中的已安装服务列表中,使用 Windows 控制面板可访问这些服务。在SQL Server 2005中,可选安装的服务有10种之多。 不论是安装SQL Server 2000,还是安装SQL Server 2005,其中必有一步是需要用户选择服务的登录帐户类型。

在SQL Server 2000中,界面如下所示:

[SQL Server] 服务启动帐户

SQL Server 2005中,界面如下所示:

[SQL Server] 服务启动帐户

那么,为什么需要用户选择服务帐户类型呢,不同的服务帐户类型又有什么差别?本文就这两个问题做一简单分析。

一、为什么需要服务帐户类型

SQL Server在操作系统中是作为进程来运行的,SQL Server中的每个服务代表一个进程或一组进程。每个进程需要有访问SQL Server相关文件(如.mdf、.ndf 和.ldf 等文件)或注册表或者SQL Server安装目录的权限。这与当前登录到SQL Server服务器上的用户权限无关。无论是管理员帐号Sa,还是普通SQL Server用户,这些SQL Server用户的权限大小与操作系统中SQL Server进程权限无关。为了能让SQL Server在操作系统中正常的启动和运行,就需要指定SQL Server的服务帐户,用以登录Windows操作系统并获取需要访问文件的权限。所以服务帐户指的是Windows操作系统中的帐户。

二、不同的服务帐户类型的含义

理解了为什么需要指定服务帐户,那么我们再来看一下在SQL Server 2000以及SQL Server 2005中,不同服务帐户的作用。只有理解了不同服务帐户的作用,我们才知道在实际环境中该如何选择最适合的服务帐户。

1.  SQL Server 2000服务帐户类型

SQL Server 2000中服务帐户只有两种,如图一所示,分别是“本地系统帐户”和“域用户帐户”。两者之间的区别在SQL Server 2000联机帮助中说得很清楚:

本地系统帐户不要求密码,没有 Windows NT 4.0 和 Windows 2000 的网络访问权限,同时限制 SQL Server 安装与其它服务器交互。

域用户帐户使用 Windows 身份验证,即用于连接到操作系统的用户名和密码也用于连接到 SQL Server。一般情况下都使用域用户帐户,因为许多服务器之间的活动只能使用域用户帐户才能执行,例如:远程过程调用,复制,备份到网络驱动器以及SQL邮件相关功能。也就是涉及到网络相关的操作,“本地系统帐户”就无法为力。我们从服务帐户的作用上来思考就比较容易理解原因所在。如上面为什么需要服务帐户上所说的一样,服务帐户指的是Windows操作系统中的帐户。我们知道,在Windows网络中两台计算机要通讯,被访问方需要访问方提供身份验证信息,因为本地系统帐户不属于Windows帐号中的 Everyone 组,因此,使用该帐户的服务只能通过空会话来访问网络资源。一般情况下,空会话会在最基本的安全设置中被禁用,这就是“本地系统帐户”无法使用使用网络功能的原因所在。“域用户帐户”就是通过帐号信息进行安全身份验证,只要提供的安全身份信息验证通过,网络访问就被允许。这里“域用户帐号”名字并不贴切,其实并不一定要求是AD域用户帐户,基于工作组模型的用户帐户一样可以适应于“域用户帐号”。

2.  SQL Server 2005服务帐户类型

SQL Server 2005中服务帐户类型分为“内置系统帐户”和“域用户帐户”,但“内置系统帐户”细分成三类“本地系统帐户”、“网络服务帐户”以及“本地服务帐户”。在SQL Server 2005联机帮助中不同的服务帐户类型说明如下:

“本地系统账户”是一个高特权帐户;向 SQL Server 服务帐户分配 Local System 权限时应谨慎。

“网络服务帐户” 网络服务帐户是一个特殊的内置帐户,它与通过身份验证的用户帐户类似。 网络服务帐户与 Users 组的成员具有相同级别的资源和对象访问权限。 以网络服务帐户身份运行的服务将使用计算机帐户的凭据访问网络资源。Microsoft 建议,对于 SQL Server 服务或 SQL Server 代理服务,不要使用 Network Service 帐户。 本地用户帐户或域用户帐户更适用于这些 SQL 服务。

“本地服务帐户”是一个内置帐户,它与通过身份验证的用户帐户类似。本地服务帐户与 Users 组的成员具有相同级别的资源和对象访问权限。如果有个别服务或进程的安全受到威胁,则此有限访问权限有助于保护系统的安全。以本地服务帐户身份运行的服务将以一个没有凭据的空会话形式访问网络资源。

“域用户帐户”是一个使用 Windows 身份验证的域用户帐户,以设置并连接到 SQL Server。Microsoft 建议对 SQL Server 服务使用具有最低权限的域用户帐户,因为 SQL Server 服务不需要管理员帐户特权。

建议在实际环境中,如果存在多台SQL Server服务器互相通信,请使用“域用户帐户”。如果个人测试环境,服务帐户类型按个人喜好。

三、修改服务启动的服务帐户类型

理解了不同服务帐户类型后,如果已经部署的SQL Server服务启动服务帐户并不适合实际需求,修改服务帐户服务启动类型方法也很简单: 打开”管理工具“->”服务“,选择具体的服务,修改相应的服务登录用户即可。

如果觉得服务中可选择的类型不够,可以使用如下方法修改
1. SQL Server 2000

打开企业管理器,选择要修改的SQL Server服务器,右键选择“属性”,在属性窗口"安全性"中设置。

[SQL Server] 服务启动帐户

2.  SQL Server 2005

   打开SQL Server 2005的配置工具->SQL Server配置管理器,选中“SQL Server 2005服务”,选择具体的服务,设置启动服务帐户。

[SQL Server] 服务启动帐户