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 ログインの名前を指定します。ドメイン ログインは角かっこで囲み、[domain\user] の形式で表す必要があります。

  • ENABLE | DISABLE
    このログインを有効にするか無効にするかを指定します。

  • PASSWORD ='password'
    SQL Server ログインにのみ適用されます。変更するログインのパスワードを指定します。パスワードでは大文字と小文字が区別されます。

  • PASSWORD **=**hashed_password
    HASHED キーワードにのみ適用されます。作成するログインのパスワードのハッシュ値を指定します。

  • HASHED
    SQL Server ログインのみに適用されます。PASSWORD 引数の後に入力されたパスワードが、ハッシュ済みであることを示します。このオプションを選択しなかった場合、パスワードはハッシュされてからデータベースに格納されます。このオプションは、2 つのサーバー間でログインを同期する場合にのみ使用してください。パスワードを定期的に変更する場合は 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 プリンシパルの SID と、SQL Server 内のログインに関連付けられている SID が一致する必要があります。SQL Server ログインの新しい名前には、円記号 (\) は使用できません。

  • CHECK_EXPIRATION = { ON | OFF }
    SQL Server ログインにのみ適用されます。このログインに、パスワードの有効期限ポリシーを適用するかどうかを指定します。既定値は OFF です。

  • CHECK_POLICY = { ON | OFF }
    SQL Server ログインにのみ適用されます。このログインに、SQL Server を実行しているコンピュータの、Windows のパスワード ポリシーを適用するかどうかを指定します。既定値は ON です。

  • CREDENTIAL = credential_name
    SQL Server ログインにマップする資格情報の名前を指定します。この資格情報はサーバー内に存在する必要があります。詳細については、「資格情報 (データベース エンジン)」を参照してください。

  • NO CREDENTIAL
    ログインからサーバー資格情報へのマッピングがある場合は削除します。詳細については、「資格情報 (データベース エンジン)」を参照してください。

  • UNLOCK
    SQL Server ログインにのみ適用されます。ロックされているログインのロックを解除します。

  • ADD CREDENTIAL
    拡張キー管理 (EKM: Extensible Key Management) プロバイダ資格情報をログインに追加します。詳細については、「拡張キー管理 (EKM) について」を参照してください。

  • DROP CREDENTIAL
    ログインに対する拡張キー管理 (EKM) プロバイダ資格情報を削除します。詳細については、「拡張キー管理 (EKM) について」を参照してください。

説明

CHECK_POLICY が ON に設定されている場合、HASHED 引数は使用できません。

CHECK_POLICY を ON に変更した場合、次の動作が発生します。

  • CHECK_EXPIRATION が明示的に OFF に設定されていない場合は、このオプションも ON に設定される。

  • パスワードの履歴が、現在のパスワード ハッシュの値に初期化される。

CHECK_POLICY を OFF に変更した場合、次の動作が発生します。

  • CHECK_EXPIRATION も OFF に設定される。

  • パスワードの履歴がクリアされる。

  • lockout_time の値がリセットされる。

MUST_CHANGE を指定した場合、CHECK_EXPIRATION および CHECK_POLICY は ON に設定する必要があります。ON に設定しない場合、ステートメントは失敗します。

CHECK_POLICY を OFF に設定した場合、CHECK_EXPIRATION を ON に設定することはできません。このオプションの組み合わせで ALTER LOGIN ステートメントを実行すると、ステートメントは失敗します。

重要な注意事項重要

CHECK_EXPIRATION および CHECK_POLICY は、Windows Server 2003 以降でのみ適用されます。詳細については、「パスワード ポリシー」を参照してください。

重要な注意事項重要

Windows Server 2003 の既知の問題により、アカウント ロックアウトのしきい値に達しても無効なパスワード数がリセットされない場合があります。以降のログインの試行が失敗すると直ちにロックアウトが発生する可能性があります。無効なパスワード数を手動でリセットするには、CHECK_POLICY = OFF に設定した直後に、CHECK_POLICY = ON に設定します。アカウント ロックアウトのしきい値の詳細については、サポート技術情報の記事 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 を有効にする。

  • ログイン名を変更する。

  • ログインを有効または無効にする。

  • ログインを別の資格情報にマップする。

プリンシパルは、所有するログインのパスワード、既定の言語、および既定のデータベースを変更できます。

A. 無効なログインを有効にする

次の例では、ログイン Mary5 を有効にします。

ALTER LOGIN Mary5 ENABLE;

B. ログインのパスワードを変更する

次の例では、ログイン Mary5 のパスワードを強力なパスワードに変更します。

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

C. ログインの名前を変更する

次の例では、ログイン Mary5 の名前を John2 に変更します。

ALTER LOGIN Mary5 WITH NAME = John2;

D. ログインを資格情報にマップする

次の例では、ログイン John2 を資格情報 Custodian04 にマップします。

ALTER LOGIN John2 WITH CREDENTIAL = Custodian04;

E. ログインを拡張キー管理資格情報にマップする

次の例では、ログイン Mary5 を EKM 資格情報 EKMProvider1 にマップします。

ALTER LOGIN Mary5
ADD CREDENTIAL EKMProvider1;
GO

F. ログインのロックを解除する

SQL Server ログインのロックを解除するには、**** を必要なアカウントのパスワードに置き換えて、次のステートメントを実行します。

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

パスワードを変更しないでログインのロックを解除するには、チェック ポリシーをオフにしてからもう一度オンにします。

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

G. HASHED を使用してログインのパスワードを変更する

次の例では、TestUser ログインのパスワードを既にハッシュされた値に変更します。

ALTER LOGIN TestUser WITH 
PASSWORD = 0x01000CF35567C60BFB41EBDE4CF700A985A13D773D6B45B90900 HASHED ;
GO