--==问题描述 基本都为:SQL Server Agent服务无法启动之内存锁定
装 Windows Server 2003(SP2) + SQL Server 2005(SP3) 时碰到报错: SQL Server
Agent 必须可以以sysadmin身份连接到SQL Server,但是(未知)不是sysadmin角色的成员。
--==配置环境
服务器环境为32位Intel? Xeon? CPU E54410 @2.33GHz双路双核开启超线程,8.00GB的内存,RAID10。
1.根据最小权限原则,安装完数据库及SP3补丁后,建立Users组用户SqlStartUser。
2.通过SQL Server配置管理器配置启用TCP/IP协议,IPALL的TCP端口改为32959。SQL
Server(MSSQLSERVER)和SQL Server Agent(MSSQLSERVER)的服务启动账号为SqlStartUser。
3.本地安全设置->本地策略->用户权限分配->内存中锁定页面添加SqlStartUser。
4.勾选使用AWE分配内存。最小服务器内存(MB)5500,最大服务器内存(MB)7200,其他留给操作系统。
--==检查步骤
1.检查本地账号SqlStartUser隶属于哪几个组:本地Windows组之Users组;本地Windows组之SQL
Server服务账户组SQLServer2005MSSQLUser$DBSRV1$MSSQLSERVER;本地Windows组之SQL
Server服务账户组SQLServer2005SQLAgentUser$DBSRV1$MSSQLSERVER。
相关知识:在指定一个用于SQL Server服务的账户之后,SQL Server安装会为不同的SQL
Server服务创建Windows组账户,并将这些服务账户分别添加到这些组账户中。这些新建的用户组被给予运行服务所需的最小的权利和权限。如果想在
安装完成后更换一个与SQL
Server服务相关联服务账户,用于确保运行该服务所需的最低限度的权利和权限都已被授予给该账户的最佳方法是把该账户添加到相关组中。
2.检查数据库登录名是否有DBSRV1\SqlStartUser。
3.检查事件查看器应用程序有关服务启动的过程信息:
类型 来源 描述
①审核成功 MSSQLSERVER 用户 'DBSRV1 \SqlStartUser' 登录成功。连接: trusted. [客户端: <local machine>]
②信息 MSSQLSERVER 配置选项 'show advanced options' 已从 1 更改为 1。请运行 RECONFIGURE 语句进行安装。
③信息 MSSQLSERVER SQL Server 阻止了对组件 'Agent XPs' 的
过程'dbo.sp_sqlagent_has_server_access'
的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Agent
XPs'。有关启用 'Agent XPs' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
④信息 MSSQLSERVER SQL Server 阻止了对组件 'Agent XPs' 的
过程'dbo.sp_sqlagent_get_startup_info'
的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Agent
XPs'。有关启用 'Agent XPs' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
⑤错误 MSSQLSERVER SQLServerAgent could not be started
(reason: SQLServerAgent 必须能够以 SysAdmin 身份连接到 SQLServer,但“(未知)”不是
SysAdmin 角色的成员)。
从信息③和④看到组件'Agent XPs'未能启动。通过系统管理员登录执行语句:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Agent XPs', 1;
GO
RECONFIGURE
GO
报错没有内存物理地址扩展权限。判断原因为32位机器,开启了AWE支持,更改了服务启动账户,但这个账户没有加入到内存锁定页的安全管理中去,所以导致了SQL代理服务启动失败,把SqlStartUser账户加入到内存锁定就可以启动了