本記事はSQL Server限定となります。MySQLやPostgreSQLの場合はこの方法は使えません。
はじめに
サーバ移行などで、バックアップしたDBを別環境にリストア後、Implem.CodeDefiner.dll _rds
を実行すると、'Implem.Pleasanter_Owner' はログインできませんでした。
と表示されるときの対処法です。
2024/12/01現在、公式マニュアルに記載されている方法は今後非推奨となる方法が含まれている&対応しきれないので、こちらの方法を使う方がすんなり対応出来ます。
ユーザ情報を調べる
Implem.Pleasanter_Owner
とImplem.Pleasanter_User
が孤立ユーザになっているのが原因なので、まずは孤立ユーザを調べます。
SSMSなどで下記のコマンドを実行します。
USE [master];
SELECT dp.type_desc, dp.sid, dp.name AS user_name
FROM sys.database_principals AS dp
LEFT JOIN sys.server_principals AS sp
ON dp.sid = sp.sid
WHERE sp.sid IS NULL
AND dp.authentication_type_desc = 'INSTANCE';
Implem.Pleasanter_Owner
とImplem.Pleasanter_User
の2レコードが表示されると思います。
ここで重要なのはSIDです。SIDをメモしてください。
ユーザを新規で作ってSIDで紐付け
前項の方法で取得したSIDを使って、新規でユーザを作成しリストアしたDBに含まれるユーザ情報と統合します。
USE [master];
CREATE LOGIN [Implem.Pleasanter_Owner]
WITH PASSWORD = <Rds.jsonに記載しているImplem.Pleasanter_Ownerのパスワード>,
SID = <取得したImplem.Pleasanter_OwnerのSID>;
CREATE LOGIN [Implem.Pleasanter_User]
WITH PASSWORD = <Rds.jsonに記載しているImplem.Pleasanter_Userのパスワード>,
SID = <取得したImplem.Pleasanter_UserのSID>;
これで完了です。再度Implem.CodeDefiner.dll _rds
を実行してみてください。