ALTER LOGIN (Transact-SQL)

Изменяет свойства учетной записи входа SQL Server.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

ALTER LOGIN login_name 
    { 
    <status_option> 
    | WITH <set_option> [ ,... ]
    | <cryptographic_credential_option>
    } 

<status_option> ::=
        ENABLE | DISABLE

<set_option> ::=            
    PASSWORD = 'password' | hashed_password HASHED
    [ 
      OLD_PASSWORD = 'oldpassword'
      | <password_option> [<password_option> ] 
    ]
    | DEFAULT_DATABASE = database
    | DEFAULT_LANGUAGE = language
    | NAME = login_name
    | CHECK_POLICY = { ON | OFF }
    | CHECK_EXPIRATION = { ON | OFF }
    | CREDENTIAL = credential_name
    | NO CREDENTIAL
 
<password_option> ::= 
    MUST_CHANGE | UNLOCK
<cryptographic_credentials_option> ::= 
         ADD CREDENTIAL credential_name
          | DROP CREDENTIAL credential_name

Аргументы

  • login_name
    Указывает имя входа SQL Server, которое необходимо изменить. Имена входа домена необходимо заключать в квадратные скобки в формате [домен\пользователь].

  • ENABLE | DISABLE
    Включает или отключает данное имя входа.

  • PASSWORD ='password'
    Применяется только к именам входа SQL Server. Указывает пароль для имени входа, которое необходимо изменить. При вводе пароля учитывается регистр символов.

  • PASSWORD **=**hashed_password
    Применимо только к ключевому слову HASHED. Указывает хэшированное значение пароля для создаваемого имени входа.

  • HASHED
    Применяется только к именам входа SQL Server. Указывает, что пароль, введенный после аргумента PASSWORD, уже хэширован. Если этот параметр не установлен, пароль хэшируется перед сохранением в базе данных. Этот параметр должен использоваться только для синхронизации имени входа между двумя серверами. Не используйте параметр HASHED для плановой смены паролей.

    ПримечаниеПримечание

    Этот аргумент работает только с хэшами, созданными в SQL Server 2000 или более поздних версиях.

  • OLD_PASSWORD ='oldpassword'
    Применяется только к именам входа SQL Server. Текущий пароль имени входа, которому будет присвоен новый пароль. При вводе пароля учитывается регистр символов.

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

  • DEFAULT_DATABASE **=**database
    Указывает базу данных по умолчанию, присвоенную имени входа.

  • DEFAULT_LANGUAGE **=**language
    Указывает язык по умолчанию, присвоенный имени входа.

  • NAME = login_name
    Указывает новое имя для имени входа, которое необходимо переименовать. Если оно является именем входа Windows, то идентификатор безопасности участника Windows, соответствующий новому имени, должен совпадать с идентификатором безопасности, относящимся к имени входа SQL Server. Новое имя входа SQL Server не может содержать обратную косую черту (\).

  • CHECK_EXPIRATION = { ON | OFF }
    Применяется только к именам входа SQL Server. Указывает, надо ли принудительно применять к данному имени входа политику истечения срока действия паролей. Значение по умолчанию — OFF.

  • CHECK_POLICY = { ON | OFF }
    Применяется только к именам входа SQL Server. Указывает, что политика паролей Windows на компьютере, где выполняется SQL Server, должна быть принудительно применена к данному имени входа. Значение по умолчанию — ON.

  • CREDENTIAL = credential_name
    Имя учетных данных для сопоставления с именем входа SQL Server. Учетные данные уже должны существовать на сервере. Дополнительные сведения см. в разделе Учетные данные (компонент Database Engine). Учетные данные не могут быть сопоставлены с именем входа sa.

  • NO CREDENTIAL
    Удаляет любые существующие сопоставления имени входа с учетными данными сервера. Дополнительные сведения см. в разделе Учетные данные (компонент Database Engine).

  • UNLOCK
    Применяется только к именам входа SQL Server. Указывает, что заблокированное имя входа должно быть разблокировано.

  • ADD CREDENTIAL
    Добавляет к имени входа учетные данные поставщика расширенного управления ключами. Дополнительные сведения см. в разделе Основные сведения о расширенном управлении ключами (EKM).

  • DROP CREDENTIAL
    Удаляет из имени входа учетные данные поставщика расширенного управления ключами. Дополнительные сведения см. в разделе Основные сведения о расширенном управлении ключами (EKM).

Замечания

Если параметр CHECK_POLICY имеет значение ON, аргумент HASHED использовать нельзя.

При изменении значения CHECK_POLICY на ON происходит следующее.

  • Параметр CHECK_EXPIRATION также получает значение ON, если ему явно не присваивается значение OFF.

  • Журнал паролей инициализируется хэшированным значением текущего пароля.

При изменении CHECK_POLICY на OFF происходит следующее.

  • Параметр CHECK_EXPIRATION также получает значение OFF.

  • Журнал паролей очищается.

  • Значение параметра lockout_time сбрасывается.

Если задан параметр MUST_CHANGE, то параметры CHECK_EXPIRATION и CHECK_POLICY должны иметь значение ON. В противном случае выполнение инструкции приведет к ошибке.

Если значение параметра CHECK_POLICY установлено равным OFF, то параметр CHECK_EXPIRATION не может иметь значения ON. Выполнение инструкции ALTER LOGIN с таким сочетанием параметров завершится ошибкой.

Важное примечаниеВажно!

Параметры CHECK_EXPIRATION и CHECK_POLICY будут принудительно применяться только в Windows Server 2003 или более поздних версиях. Дополнительные сведения см. в разделе Политика паролей.

Важное примечаниеВажно!

Известная проблема в Windows Server 2003 может помешать сбросу счетчика попыток неверного ввода пароля после достижения порогового значения Account Lockout. Это может вызвать немедленную блокировку при последующих неудачных попытках входа в систему. Сброс счетчика плохих паролей можно произвести вручную, ненадолго установив значение CHECK_POLICY = OFF, после чего установить CHECK_POLICY = ON. Дополнительные сведения о пороговом значении Account Lockout см. в статье 818078 базы знаний Майкрософт: Учетная запись пользователя может быть преждевременно заблокирована.

Нельзя использовать параметр ALTER_LOGIN с аргументом DISABLE для запрещения доступа группе Windows. Например, инструкция ALTER_LOGIN [домен\группаdomain\group] DISABLE вернет следующее сообщение об ошибке:

«Сообщение 15151, уровень 16, состояние 1, строка 1.

«Не удалось изменить имя входа "Домен\ГруппаDomain\Group", так как оно не существует или отсутствует разрешение».

Это сделано намеренно.

Разрешения

Необходимо разрешение ALTER ANY LOGIN.

Если используется параметр CREDENTIAL, то также требуется разрешение ALTER ANY CREDENTIAL.

Если изменяемое имя входа является членом предопределенной роли сервера sysadmin или имеет разрешения CONTROL SERVER, ему также требуется разрешение CONTROL SERVER для внесения следующих изменений.

  • Сброс пароля без указания старого.

  • Включение параметров MUST_CHANGE, CHECK_POLICY или CHECK_EXPIRATION.

  • Изменение имени входа.

  • Включение или отключение имени входа.

  • Сопоставление имени входа с другими учетными данными.

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

Примеры

А. Включение отключенного имени входа

Следующий пример включает имя входа Mary5.

ALTER LOGIN Mary5 ENABLE;

Б. Изменение пароля для имени входа

В следующем примере пароль для имени входа Mary5 изменяется на надежный пароль.

ALTER LOGIN Mary5 WITH PASSWORD = '<enterStrongPasswordHere>';

В. Изменение имени входа

Следующий пример изменяет имя входа Mary5 на John2.

ALTER LOGIN Mary5 WITH NAME = John2;

Г. Сопоставление имени входа с учетными данными

Следующий пример сопоставляет имя входа John2 с учетными данными Custodian04.

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

Д. Сопоставление имени входа с учетными данными расширенного управления ключами

В следующем примере имя входа Mary5 сопоставляется с учетными данными EKMProvider1.

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

Е. Разблокирование имени входа

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

ALTER LOGIN [Mary5] WITH PASSWORD = '****' UNLOCK ;
GO

Чтобы разблокировать учетную запись без изменения пароля, отключите и снова включите политику проверки.

ALTER LOGIN [Mary5] WITH CHECK_POLICY = OFF;
ALTER LOGIN [Mary5] WITH CHECK_POLICY = ON;
GO

Ж. Изменение пароля для имени входа с помощью параметра HASHED

В следующем примере пароль имени входа TestUser изменяется на заранее хэшированное значение.

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO