从XP开始,Windows提供了两个特殊帐号“Network Service”和“Local Service”,专用于启动服务,前者较通常的“Local System”帐号权限更低,后者再次之。如果一个服务需要访问SQLServer,通常会使用的NT集成验证来登录数据库,这就要求在SQLServer里创建相应的NT帐户。
把Network Server帐户添加到Administrators组里并不可取,因为Administrators是SQLServer所有数据库的DBO,拥有的权限过大,而在我的大多数(几乎所有)应用中,登录SQLServer的帐号只有PUBLIC权限(通常分派给它执行存储过程的权限、而没有直接执行SQL语句的权限)。
要将Network Server帐户添加为SQLServer的Login,用sp_grantlogin是不行的,用企业管理器也做不到(至少在SQL7里不行),其实解决方案很简单,直接创建一个NT用户组(比如名为NetworkService),然后将Network Service帐户添加到这个组里,然后用sp_grantlogin(或用企业管理器)就可以了。