SQL Server中使用sp_password重置SA密码实例
SQL2000的SA密码不能更改的解决方法,在更改sa的密码出现下面的错误:
Error21776:[SQL-DMO]Thename‘dbo'wasnotfoundintheUserscollection.Ifthenameisaqualifiedname,use[]toseparatevariouspartsofthename,andtryagain.
解决方法:用SQl带的查询管理器连接到sql上,执行:
EXECsp_passwordNULL,‘XXXXXX',‘sa'
关于Sp_password具体信息如下:
sp_password
添加或更改Microsoft?SQLServer?登录的密码。
语法
sp_password[][@old=]‘old_password',]
{[@new=]‘new_password'}
[,][@loginame=]‘login']
参数
[@old=]‘old_password'
是旧密码。old_password为sysname类型,其默认值为NULL。
[@new=]‘new_password'
是新密码。new_password为sysname类型,无默认值。如果没有使用命名参数,就必须指定old_password。
[@loginame=]‘login'
是受密码更改影响的登录名。login为sysname类型,其默认值为NULL。login必须已经存在,并且只能由sysadmin固定服务器角色的成员指定。
返回代码值
0(成功)或1(失败)
注释
SQLServer密码可包含1到128个字符,其中可包括任何字母、符号和数字。
新密码以加密的形式更新和存储,因此,任何用户(甚至系统管理员)都不能查看密码。
当sysadmin或securityadmin固定服务器角色的成员使用带全部三个参数的sp_password重新设置他们自己的密码时,审核记录反映的却是他们正在更改别人的密码。
sp_password不能用于MicrosoftWindowsNT?安全帐户。通过WindowsNT网络帐户连接到SQLServer的用户是由WindowsNT授权的,因此其密码只能在WindowsNT中更改。
sp_password不能在用户定义的事务中执行。
权限
执行权限默认地授予public角色,以供用户更改自己的登录密码。只有sysadmin角色的成员可更改其他用户的登录密码。
示例
A.无原密码的情况下更改登录密码
下面的示例将登录Victoria的密码更改为ok。
EXECsp_passwordNULL,‘ok',‘Victoria'
B.更改密码
下面的示例将登录Victoria的密码由ok改为coffee。
EXECsp_password‘ok',‘coffee'