对于SQL SERVER 在Microsoft Window NT帐号下运行时,SQL Server会为该Windows NT帐户设置对于多种特定文件,文件夹和注册表项的Windows用户权限。如果此后使用SEM更改SQL Server & SQL agent的启动帐号,SEM会自动为您将所以所需的权限和Windows用户权限分配给新的启动帐号,所以推荐使用。
但你使用‘管理工具’中的“服务”程序来添加帐户,你必须手动的设置一些信息:
●注册表项
●磁盘上的NTFS权限
●Windows 的用户权限
“完全控制”权限适用于以下项和子项:
注意:对于下面的项有一个例外,该项中没有设置子项的权限:
但你使用‘管理工具’中的“服务”程序来添加帐户,你必须手动的设置一些信息:
●注册表项
●磁盘上的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/<实例名> HKEY_LOCAL_MACHINE/Software/Microsoft/MSDTC HKEY_LOCAL_MACHINE/Software/Microsoft/Search |
• | 对于默认实例:
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 HKEY_LOCAL_MACHINE/Software/Microsoft/MSDTC HKEY_LOCAL_MACHINE/Software/Microsoft/Search |
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Perflib
下面是一个用于命名实例的示例:
如果您不希望 SQL Server 或 SQL Server 代理启动帐户成为 本地管理员组的成员,那么,MSSQLServer 服务和 SQLServerAgent 服务的启动帐户(本地 Windows NT 帐户或域 Windows NT 帐户)必须具有以下用户权限:
注意:为了便于编程,在用户权限全名的旁边放置了 Microsoft Windows NT 用户权限名。
如果 MSSQLServer 服务将要启动的帐户:
您必须将 MSSQLServer 和 SQLServerAgent 服务的启动帐户(或这两者)添加到 SQL Server 系统管理员 (
sysadmin) 角色。授予 [域/NT帐户] 用户对 SQL Server 的登录权。例如:
磁盘上的 NTFS 权限
在这些 NTFS 文件夹上为 MSSQLServer 服务和 SQLServerAgent 服务的启动帐户(本地 Microsoft Windows NT 帐户或域 Windows NT 帐户)设置“完全控制”。对于群集,您必须还要修改每个计算机节点上的相应的路径。下面是一个用于命名实例的示例:
D:/Program Files/Microsoft SQL Server/MSSQL$_instancename_/
下面是一个用于默认实例的示例:
D:/Program Files/Microsoft SQL Server/MSSQL/
子文件夹和文件也必须具有相同的权限。
Windows 用户权限
通常,操作系统的默认安装会赋予 本地管理员组 SQL Server 正常工作所需的所有用户权限。因此,要成为 SQL Server 服务的启动帐户、而且已经被添加到 本地管理员组的本地 Windows NT 帐户或域帐户,具有它们所需要的所有用户权限。但是,建议您不要在这么高的用户权限下运行 SQL Server。如果您不希望 SQL Server 或 SQL Server 代理启动帐户成为 本地管理员组的成员,那么,MSSQLServer 服务和 SQLServerAgent 服务的启动帐户(本地 Windows NT 帐户或域 Windows NT 帐户)必须具有以下用户权限:
• | 作为操作系统的一部分操作 = SeTcbPrivilege |
• | 绕开遍历检查 = SeChangeNotify |
• | 增加配额 = SeIncreaseQuotaPrivilege |
• | 锁定内存页 = SeLockMemory |
• | 作为批处理作业登录= SeBatchLogonRight |
• | 作为服务登录 = SeServiceLogonRight |
• | 替换进程级令牌 = SeAssignPrimaryTokenPrivilege |
注意:为了便于编程,在用户权限全名的旁边放置了 Microsoft Windows NT 用户权限名。
如果 MSSQLServer 服务将要启动的帐户:
• | 不是计算机本地管理员组的成员。 - 或 - |
• | BUILTIN/Administrators SQL Server 登录已被删除。 |
EXEC sp_grantlogin [Example/test]然后,将该帐户添加到 sysadmin 角色:
EXEC sp_addsrvrolemember @loginame = [Example/test]
, @rolename = 'sysadmin'