Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Смена пароля пользователем на SQL 2005/2008/2012  [new]
Devel80
Member

Откуда:
Сообщений: 77
Добрый день, коллеги!

Пользователи просили реализовать функцию, чтобы они могли подключиться со своим логином к БД MS SQL Server и сами изменить пароль для своего SQL-ного логина.

На SQL 2000 все работало без проблем, подключаемся под логином, скажем, usertest, посылаем запрос, к примеру,

exec sp_password null, '123'

и пароль меняется с пустого на 123.

На SQL 2005/2008/2012 почему-то эта функцию не хочет работать. Подключаюсь к SQL Server под логином usertest (под sa работает без проблем), посылаю запрос

alter login usertest with password = '123', получаю сообщение

Msg 15151, Level 16, State 1, Line 1
Невозможно изменить имя входа "usertest", так как он не существует или отсутствуют разрешения.

Имя входа usertest точно существует, вот какие разрешения еще нужны, кто-нибудь может подсказать? Нужно, чтобы обычный юзер мог сам себе менять пароль входа на SQL Server без админовских прав.

Заранее спасибо!
17 сен 14, 13:22    [16585294]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
Devel80
На SQL 2005/2008/2012 почему-то эта функцию не хочет работать

Так и пишет - "Не хочу работать" ?

Devel80
Нужно, чтобы обычный юзер мог сам себе менять пароль входа на SQL Server без админовских прав.

A principal can change the password, default language, and default database for its own login.
17 сен 14, 13:26    [16585324]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Devel80,

> Подключаюсь к SQL Server под логином usertest

и, к примеру, запрос
select suser_sname()
это подтверждает?
17 сен 14, 13:31    [16585353]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Devel80
Member

Откуда:
Сообщений: 77
На запрос в SQL Server Management Studio Express 2005

select suser_sname()

получаю usertest , все нормально.

Еще раз опишу проблему. Установил обычный SQL 2005 Express Edition. Создаю логин usertest. Подключаюсь под этим логином к SQL Server 2005 при помощи SQL Server Management Studio Express 2005 .

Делаю запрос на смену пароля

alter login usertest with password = '123'

SQL Server не позволяет изменить пароль и выдает мне сообщение

Msg 15151, Level 16, State 1, Line 1
Невозможно изменить имя входа "usertest", так как он не существует или отсутствуют разрешения.

Кто знает, что с этим можно сделать и как пользователю под своим логином зайти и поменять свой пароль, помогите, пожалуйста.
17 сен 14, 21:59    [16587954]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
o-o
Guest
alter login usertest with password = '123' old_password = 'bla-bla-bla'
17 сен 14, 22:17    [16587993]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Devel80
Member

Откуда:
Сообщений: 77
o-o,

огромное спасибо, что помогли, теперь действительно все работает!
18 сен 14, 10:51    [16589059]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
BOL
If the login that is being changed is a member of the sysadmin fixed server role or a grantee of CONTROL SERVER permission, also requires CONTROL SERVER permission when making the following changes:

-Resetting the password without supplying the old password.
...
18 сен 14, 11:01    [16589119]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
ularsoft
Member

Откуда:
Сообщений: 345
Уважаемые знатоки!
Я хочу сделать тоже самое что и вы. Имеется клиент-серверное приложение на Visual Foxpro 8, база данных на MS SQL 2000. На основании внутренних политик, я меняю пароли ежемесячно вручную. Мне хочется, чтобы с помощью данного приложения каждый пользователь менял пароли самостоятельно каждые 30 дней. Помогите пожалуйста.
25 сен 14, 08:19    [16619035]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
ularsoft,

Сохраняйте в какой-нибудь таблице дату последнего изменения пароля пользователем и после входа в программу проверяйте, прошло ли 30 дней с моменты смены пароля, если да то блокируйте работу с программой пока не сменит пароль.
25 сен 14, 08:38    [16619074]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
ularsoft
Member

Откуда:
Сообщений: 345
Ruuu,

Помоги пожалуйста :(. Тут у меня в офисе одна тетка достала меня уже. Правильно, но как мне найти дату изменения юзерами в базе данных? Как это в программе написать? У меня Visual Foxpro 8.
25 сен 14, 08:44    [16619088]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
ularsoft
но как мне найти дату изменения юзерами в базе данных?

Просто придумайте таблицу(ы), где вы будете хранить все, что нужно для "каждый пользователь менял пароли самостоятельно каждые 30 дней". И извлекайте из нее эту информацию
25 сен 14, 09:24    [16619211]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
ularsoft
Member

Откуда:
Сообщений: 345
Создал таблицу:
CREATE TABLE [dbo].[user_login] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[u_kod] [int] NULL ,
[u_login] [char] (20) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[set_block] [int] NULL ,
[first_enter] [int] NOT NULL ,
[u_date] [datetime] NULL ,
) ON [PRIMARY]
GO

где, [u_kod] - уникальный код юзера;
[u_login] - уникальный логин юзера;
[set_block] - блокировка 0 или 1;
[first_enter] - дата первичного подключения;
[end_date] - дата следующего изменения пароля.


У меня при входе в программу, 2 строки: Логин и пароль. Дальше подтолкните пожалуйста.
25 сен 14, 09:50    [16619376]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
ularsoft
Дальше подтолкните пожалуйста.

В смысле как установить равна ли текущая дата [end_date] ?
25 сен 14, 09:56    [16619414]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
ularsoft
Member

Откуда:
Сообщений: 345
Посредством Visual Foxpro 8 проверить, если [first_enter] первичная дата, тогда [end_date]+30 будет следующая дата изменения пароля. Дальше когда пройдут 30 дней, программа обращается к [end_date] и предлагает изменить пароль. При этом записывает в [end_date] уже измененную дату. Тут нужна помощь :(
25 сен 14, 10:21    [16619584]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
ularsoft
Посредством Visual Foxpro 8

Вопросы по Foxpro нужно задавать в форуме по Foxpro
25 сен 14, 10:24    [16619598]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
ularsoft
Member

Откуда:
Сообщений: 345
Glory,

в MS SQL 2000 можно написать тестовую функцию?
25 сен 14, 11:36    [16620088]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
ularsoft
Glory,

в MS SQL 2000 можно написать тестовую функцию?

Что такое "тестовая функция" ?
25 сен 14, 11:37    [16620102]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
ularsoft
Member

Откуда:
Сообщений: 345
Ну функцию написать, чтобы когда обращаюсь из Foxpro использовал эту функцию.
25 сен 14, 11:53    [16620225]     Ответить | Цитировать Сообщить модератору
 Re: Смена пароля пользователем на SQL 2005/2008/2012  [new]
Glory
Member

Откуда:
Сообщений: 104760
ularsoft
Ну функцию написать, чтобы когда обращаюсь из Foxpro использовал эту функцию.

Да пишите что угодно.
25 сен 14, 11:54    [16620233]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить