ALTER LOGIN (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (с первоначального выпуска по текущий выпуск).

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

Синтаксис

-- SQL Server Syntax
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

-- Windows Azure SQL Database

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

<status_option> ::=
    ENABLE | DISABLE

<set_option> ::= 
    PASSWORD ='password' 
    [
      OLD_PASSWORD ='oldpassword'
    ] 
    | NAME = login_name

Аргументы

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

  • ENABLE | DISABLE
    Включает или отключает данное имя входа. Отключение входа не влияет на поведение имен входа, которые уже подключены. Отключенные имена входа сохраняют свои разрешения и все еще могут быть олицетворены.

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

  • PASSWORD **=**hashed_password

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

    Примечание по безопасностиПримечание по безопасности

    Если имя входа (или пользователь автономной базы данных) используется для подключения и выполняется проверка подлинности, данные идентификаторов имени входа при подключении помещаются в кэш.Для имени входа, использующегося при проверке подлинности Windows, сюда относятся данные о членстве в группах Windows.Идентификатор имени входа остается зарегистрированным на протяжении периода, в который поддерживается соединение.Для принудительного изменения идентификатора, например сброса пароля или изменения членства в группе Windows, имя входа необходимо использовать для выхода из центра проверки подлинности (Windows или SQL Server), а затем повторно выполнить вход.Член предопределенной роли сервера sysadmin или любого имени входа с разрешением ALTER ANY CONNECTION может использовать команду KILL и принудительно разорвать подключение для выполнения повторного подключения с использованием имени входа.Среда SQL Server Management Studio может повторно использовать сведения о соединении при открытии нескольких соединений в окнах обозревателя объектов и редактора запросов.Закройте все соединения для принудительного выполнения повторного подключения.

  • HASHED

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

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

  • MUST_CHANGE

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

  • DEFAULT_DATABASE **=**database

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Указывает базу данных по умолчанию, назначенную имени входа.

  • DEFAULT_LANGUAGE **=**language

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

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

  • CHECK_EXPIRATION = { ON | OFF }

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Применяется только к именам входа SQL Server. Указывает, должна ли политика истечения срока действия паролей принудительно применяться к этому имени входа. Значение по умолчанию — OFF.

  • CHECK_POLICY = { ON | OFF }

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Применяется только к именам входа SQL Server. Указывает, что политики паролей Windows компьютера, на котором работает SQL Server, должны принудительно применяться к этому имени входа. Значение по умолчанию — ON.

  • CREDENTIAL = credential_name

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

  • NO CREDENTIAL

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

  • UNLOCK

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

  • ADD CREDENTIAL

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Добавляет к имени входа учетные данные поставщика расширенного управления ключами. Дополнительные сведения см. в разделе Расширенное управление ключами (Extensible Key Management).

  • DROP CREDENTIAL

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Удаляет из имени входа учетные данные поставщика расширенного управления ключами. Дополнительные сведения см. в разделе Расширенное управление ключами (Extensible Key Management).

Замечания

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

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

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

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

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

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

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

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

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

Нельзя использовать параметр 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.

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

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

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

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

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

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

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

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

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO

См. также

Справочник

CREATE LOGIN (Transact-SQL)

DROP LOGIN (Transact-SQL)

CREATE CREDENTIAL (Transact-SQL)

EVENTDATA (Transact-SQL)

Основные понятия

Учетные данные (компонент Database Engine)

Расширенное управление ключами (Extensible Key Management)