如何在不使用 SQL Server 2000 中的 SQL 企业管理器或 SQL Server 2005 中的 SQL Server 配置管理器的情况下更改 SQL Server 或 SQL Server 代理服务帐户

文章翻译 文章翻译
文章编号: 283811 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

在您初次安装 Microsoft SQL Server 以在 Microsoft Windows NT 帐户下运行时,SQL Server 会为该 Windows NT 帐户设置对特定文件、文件夹和注册表项的各种 Windows 用户权限。如果您以后使用 SQL Server 企业管理器 (SEM) 或 SQL Server 配置管理器 (SSCM) 更改 SQL Server(MSSQLServer 服务)和 SQL Server 代理服务的启动帐户,SEM 将自动为新的启动帐户分配所有必需的权限和 Windows 用户权限,这样您就不必执行任何其他操作了。我们建议您使用这种方法来更改服务帐户。

注意:您必须拥有远程服务器上的管理员权限,此功能在 SQL Server 企业管理器中才可用。

但是,如果您使用“控制面板”或“管理工具”中的“服务”加载项来更改 MSSQLServer 服务或 SQL Server 代理服务的启动帐户信息,则必须设置一些其他权限和用户权限。

本文讨论当您使用“服务”加载项更改启动帐户信息时必须采取的步骤。

在您继续本文的其余部分之前,请访问以下 Microsoft 网站并查看 Microsoft 知识库中的文章:
Microsoft 安全公告 MS02-038
http://www.microsoft.com/china/security/Bulletins/MS02-038.asp

Microsoft 安全公告 MS02-034
http://www.microsoft.com/technet/security/bulletin/MS02-034.mspx
322853 FIX:SQL Server 授予了不必要的权限或者加密函数包含未检查的缓冲区
316333 SQL Server 2000 Service Pack 2 的安全更新程序
注意:遵守 MS02-034 和 MS02-038 会消除现有的管理凭据提升漏洞并有助于防止将来发生这种漏洞。

使用“服务”加载项而不是使用 SQL 企业管理器或 SQL Server Management Studio 更改 SQL Server 或 SQL Server 代理服务帐户

如果您使用“服务”加载项而不是使用 SEM 或 SS,CM来更改 SQL Server 服务帐户或 SQL Server 代理服务帐户,则还必须设置某些注册表和 NTFS 文件系统权限以及 Microsoft Windows 用户权限。对于 SQL Server Desktop Engine(也称为 MSDE 2000)或 SQL Server 2005 Express Edition 安装尤为如此,原因是您并不具有 SEM 或 SSCM 来执行权限更改。您必须集中处理以下三个特定方面:
  • 注册表项。
  • 磁盘上的 NTFS 文件系统权限。
  • Windows 用户权限。
以下段落中分别讨论了每一方面。

注册表项

在下面的列表中的注册表项上为 MSSQLServer 服务和 SQLServerAgent 服务的启动帐户(本地 Microsoft Windows NT 帐户或域 Windows NT 帐户)设置“完全控制”。在下面的注册表配置单元下,此列表中的这些注册表项是在其中设置访问控制列表 (ACL) 的项。对于群集,请在群集的每个节点上执行此步骤。

“完全控制”权限适用于以下项和所有子项:
  • 对于命名实例:
    HKEY_LOCAL_MACHINE\Software\Clients\Mail

    HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\80

    HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\<Instancename>
  • 对于默认实例:
    HKEY_LOCAL_MACHINE\Software\Clients\Mail

    HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\80

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Cluster

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\MSSQLServer

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Providers

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Replication

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Setup

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\SQLServerAgent

    HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Tracking

如果您使用的是 SQL Server 2005

对于命名实例或默认实例,将“完全控制”权限应用于下列项和所有子项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<MSSQL.x>
注意:在此注册表子项中,<MSSQL.x> 是系统相应值的占位符。在下面的注册表子项中,您可以根据已命名为实例名的注册表项的值来确定系统的相应值。对于默认实例,实例名是 MSSQLSERVER:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\

磁盘上的 NTFS 文件系统权限

在这些 NTFS 文件夹上为 MSSQLServer 服务和 SQLServerAgent 服务的启动帐户(本地 Microsoft Windows NT 帐户或域 Windows NT 帐户)设置“完全控制”。对于群集,您必须还要修改每个计算机节点上的相应路径。

下面是一个用于命名实例的示例:
D:\Program Files\Microsoft SQL Server\MSSQL$_instancename_\
下面是一个用于默认实例的示例:
D:\Program Files\Microsoft SQL Server\MSSQL\
子文件夹和文件也必须具有相同的权限。

如果您使用的是 SQL Server 2005

对应的文件夹如下:
Drive:\Program Files\Microsoft SQL Server\<MSSQL.1>\MSSQL

Windows 用户权限

通常,操作系统的默认安装会赋予“本地管理员组”SQL Server 正常工作所需的所有用户权限。因此,要成为 SQL Server 服务的启动帐户且已添加到“本地管理员组”中的本地 Windows NT 帐户或域帐户具有它们所需的所有用户权限。但是,建议您不要在这么高的用户权限下运行 SQL Server。

如果您不希望 SQL Server 或 SQL Server 代理启动帐户成为“本地管理员组”的成员,那么,MSSQLServer 服务和 SQLServerAgent 服务的启动帐户(本地 Windows NT 帐户或域 Windows NT 帐户)必须具有以下用户权限:
  • 作为操作系统的一部分操作 = SeTcbPrivilege
  • 跳过遍历检查 = SeChangeNotify
  • 锁定内存页 = SeLockMemory
  • 作为批处理作业登录 = SeBatchLogonRight
  • 作为服务登录 = SeServiceLogonRight
  • 替换进程级令牌 = SeAssignPrimaryTokenPrivilege
注意:为了便于编程,在用户权限全名的旁边放置了 Microsoft Windows NT 用户权限名。

其他步骤

注意:如果您的计算机上的默认 NTFS 文件系统权限已被更改,请确保 SQL Server 启动帐户在 SQL Server 数据库数据和日志文件所在的根驱动器上启用了“列出文件夹”权限。

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
239759 PRB:创建数据库时可能引发错误 5177

如果启动 MSSQLServer 服务要使用的帐户是下列两个帐户之一,您必须将 MSSQLServer 或 SQLServerAgent 服务的启动帐户(或这两者)添加到 SQL Server (sysadmin) 角色中,并对 [Domain\NTaccount] 用户授予登录到 SQL Server 的权限。
  • 不是计算机“本地管理员组”的成员。
  • BUILTIN\Administrators SQL Server 登录已被删除。
例如:
EXEC sp_grantlogin [Example\test]
然后,将该帐户添加到“sysadmin”角色中:
EXEC sp_addsrvrolemember @loginame = [Example\test] 
   , @rolename =  'sysadmin'

如果您在使用 SQL Server 时执行全文搜索或群集操作,则使用 SEM 以外的任何工具更改 SQL Server 启动帐户可能会导致多种问题。

如果您遇到有关全文搜索或群集操作的问题,请参见本文的“参考”一节以获取更多信息。

如果您在 SQL Server 2000 和 Microsoft Windows 2000 环境中使用 Kerberos“安全性支持提供程序接口”(SSPI) 身份验证,您必须删除旧的服务主体名称 (SPN),然后使用新的帐户信息创建一个新的服务主体名称。有关如何使用 SETSPN 完成此任务的更多信息,请参见 SQL Server 2000 联机丛书中的“安全帐户委派”主题。

参考

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
317746 PRB:SQL Server 全文搜索不填充目录
317232 在更改群集服务帐户密码后出现事件 ID 为 1107 和 1079 的消息
295051 FIX:为执行全文搜索而将 SQL Server 帐户更改为非管理帐户使得现有目录无法使用
254321 群集 SQL Server 的可为事项、不可为事项和基本警告
239885 如何更改群集 SQL Server 计算机上的服务帐户
219264 INF:SQL Server 7.0 群集安装程序的安装顺序
198168 BUG:更改 SQL Server 群集的帐户信息时可能出现问题
有关更多信息,请访问下面的 Microsoft 网站:
http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlc2.mspx

属性

文章编号: 283811 - 最后修改: 2011年5月16日 - 修订: 10.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2000 标准版
  • Microsoft SQL Server 2000 64-bit Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL 2005 Server Workgroup
关键字:?
kbsqldeveloper kbinfo kbsql2005cluster kbhowtomaster KB283811
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com