Как обойти права на sp_password

Cooper
Дата: 11.12.2002 10:45:24
Привет.
Вобщем запускаю sp_password(из делфей) под обычным юзером(public), А мне выдает, что правом на чего-то там про Loginname обладает только sysadmin. Так каже пользователю дать возможность сменить свой пароль, если он не принадлежит роли sysadmin.
А можно напрямую писать UPDATEом пароль в таблицу sysxlogins?
Или здесь выхода нет?
jimmers
Дата: 11.12.2002 11:15:28
Вы неправильно вызываете процедуру. Кроме того, public это не Пользователь, а Роль.

Итак, если у нас есть Пользователь User1 с паролем Pass1, то для смены пароля на Pass2 необходимо вызвать (будучи залогиненым под User1):

EXECUTE master.dbo.sp_password @old = 'Pass1', @new = 'Pass2'


Соответственно, преобразуйте это в вызов из Delphi...
alexeyvg
Дата: 11.12.2002 11:16:46
Всё работает. Просто для простых пользователей можно менять только свой пароль, т.е. exec sp_password надо вызывать без третьего параметра.
alexeyvg
Дата: 11.12.2002 11:17:44
Ой, уже ответили:-(
Cooper
Дата: 11.12.2002 12:46:59
А какой тип должен быть у параметра @old?
jimmers
Дата: 11.12.2002 12:55:27
Books Online:


sp_password
Adds or changes a password for a Microsoft® SQL Server™ login.

Syntax
sp_password [ [ @old = ] 'old_password' , ]
{ [ @new =] 'new_password' }
[ , [ @loginame = ] 'login' ]

Arguments
[@old =] 'old_password'

Is the old password. old_password is sysname, with a default of NULL.

[@new =] 'new_password'

Is the new password. new_password is sysname, with no default.
old_password must be specified if named parameters are not used.

[@loginame =] 'login'

Is the name of the login affected by the password change. login is sysname,
with a default of NULL. login must already exist and can only be specified
by a member of the sysadmin fixed server role.

Return Code Values
0 (success) or 1 (failure)

Cooper
Дата: 11.12.2002 13:04:02
Спасибо!
Заработало.