日本語

操作手順: バックアップからデータベースを復元した後に SQL Server ログイン/ユーザーを再同期する

概要

下記の手順は、バックアップからデータベースを復元した後に SQL Server ログインとデータベース ユーザーを再同期する方法を示しています。 SDE スキーマ データベースがバックアップ (*.bak) から復元されるか、以前にデタッチされたデータベース (*.mdf) からアタッチされるときは常に、この処理を実行する必要があります。 下記のシナリオでは、ジオデータベース内の SDE ユーザーが、SQL Server の対応する SDE インスタンスのログインと同期されていません。

SDE ログインが追加されておらず、データベース内のユーザーと同期されていない場合は、接続に失敗し、[不正なログイン ユーザー] が表示されるか、サービスが起動しません。

手順

この問題を修正するには、ストアド プロシージャ (SP_CHANGE_USERS_LOGIN) を実行し、既存のデータベース ユーザーを対応する SQL Server ログインにマッピングします。 この操作は、当該 ‘SDE’ ユーザーがデータベースの管理のためにアクセスする必要があるすべてのデータベースに対して実行する必要があります。 また、データを所有する認証済みのすべての SQL Server データベース ユーザーに対して実行する必要もあります。 サービスの起動時に要求されるユーザーはその ‘SDE’ ユーザーのみになります。

  1. sp_change_users_login ストアド プロシージャを実行する前に、[セキュリティ] → [ログイン] を選択して、データベース ユーザーに関連付けられている SQL Server ログインがインスタンスに追加されていることを確認します。
  2. SQL Server Management Studio で新規のクエリを開き、次のコマンドを実行します。

    コード:

    use database_name
    go
    EXEC sp_change_users_login 'Update_One', 'sde', 'sde'
    go


    コマンドが完了したら、次のメッセージが返されます。

    'The command(s) completed successfully.'
    MSDN: sp_change_users_login (Transact-SQL)
  3. 修正の確認:
    データベースへの接続を試みるか、ArcCatalog で SDE または USER ログインで接続を試みて、ログインとユーザーが正しく同期されていることを確認します。

    また、次のクエリを実行して、マスター データベース内の syslogins テーブルを検索し、個々のユーザーのデータベース内にある sysusers テーブルと比較することもできます。 SID 列が一致しているかどうかを確認するには、次のクエリを使用します。

    コード:

    use master
    go
    select * from syslogins where name='sde'
    go

    use database_name
    go
    select * from sysusers where name='sde'
    go