在SQL Server 2000中,sp_password存储过程只需要db_accessadmin和db_securityadmin数据库角色的成员以及securityadmin服务器角色的成员才能让用户在不知道旧密码的情况下更改密码。然而,在SQL Server 2005/2008中,BOL表示现在用户需要"CONTROL SERVER"权限才能这样做。
CONTROL SERVER权限确切地给了用户什么权限?
更新:我找到了这个:
CONTROL SERVER是SQL Server 2005的新权限,它授予与sysadmin固定服务器角色成员相同的访问权限。- http://www.sqlservercentral.com/blogs/brian_kelley/archive/2009/02/24/detecting-when-a-login-has-implicit-access-to-a-database.aspx
更新:
事实证明文档是错误的。与SQL Server 2000一样,SQL Server 2008的sp_password似乎仍然只需要在db_accessadmin和db_securityadmin数据库角色中成为成员,并且需要在securityadmin服务器角色中成为成员,才能允许用户在不知道旧密码的情况下更改密码。