ログインには既に別のユーザー名でアカウントがあります


29

このSQLを実行すると:

USE ASPState
GO
IF NOT EXISTS(SELECT * FROM sys.sysusers WHERE NAME = 'R2Server\AAOUser')
CREATE USER [R2Server\AAOUser] FOR LOGIN [R2Server\AAOUser];
GO

次のエラーが表示されます。

ログインにはすでに別のユーザー名でアカウントがあります。

ログインアカウントのこの異なるユーザー名を知るにはどうすればよいですか?

回答:


31

これは、ログイン[R2Server \ AAOUser]がそのデータベースのユーザーに既にマップされていることを意味します。または、言い換えると、別のデータベースユーザーがこのログインを使用しています。次のクエリを使用して、ログインを使用しているデータベースユーザーを確認できます。

use YourDB
go
SELECT su.name as DatabaseUser
FROM sys.sysusers su
join sys.syslogins sl on sl.sid = su.sid
where sl.name = 'test' -- login

PS:互換ビューを使用しないスクリプトのバージョン:

Select sp.name as LoginName, sp.type_desc as LoginType,
    dp.name as DBUser, dp.type_desc as UserType
from sys.server_principals sp
join sys.database_principals dp on dp.sid = sp.sid
where sp.name = 'test' -- your login

OK、値dboが表示されているのがわかります。奇妙なことにdbo、アカウントにを使用したことを覚えていませんR2Server\AAOUser。次に何をすべきか疑問に思います。
ジャック

4
そのログインを使用してサーバーに接続するデータベースを作成しましたか?はいの場合、あなたはそのデータベースの所有者であり、別のユーザーを作成する必要はありません。設定済みです。
マリアン

実際、コマンドaspnet_regsql -E -S .\MSSQLSERVER_R2 -ssaddを使用してASPStateデータベースを作成しました。そもそも気づいてさえいませんが、おそらくすでに設定されていると思います。
ジャック

推測:「-E->現在のWindows資格情報で認証します。」:
マリアン

4
とを使用sys.server_principalssys.database_principalsます。sysusersそして、syslogins下位互換性のためにのみ存在します。
アーロンバートランド

4

それは「メタデータ」です...

データベースユーザーは、そのDBで何が起こっているかによって「破損」することがあります。(DBが復元され、復元されたコピーのロールが、オーバーレイに含まれていたロールと異なる場合、同様の動作を確認しました。これが、私が問題を解決した理由です。)

  1. SSMSでログインプロパティを開きます->(セキュリティ|ログイン| 失敗したユーザーID |プロパティ|ユーザーマッピング)。おそらく、DBが既にチェックされており、ロールが割り当てられているのを見るでしょう(完全に通常のように)。

  2. 参考のために、エラーが発生したDBの権限に注意してください。

  3. そのDBのチェックを外し、ログインを保存します。
  4. 次に、クエリを再実行して、ログイン/ロールをターゲットDBに追加します。それはうまく動作するはずです。

2
ステップ3に到達すると、次のようになります。Cannot drop the user 'dbo'. (Microsoft SQL Server, Error: 15150)
bkwdesign

Cannot drop the user 'dbo'.エラーメッセージも表示されました。このスクリプトを実行して、問題のあるユーザーマッピングを削除し、問題を修正しましたUSE DATABASE_NAME; ALTER AUTHORIZATION ON DATABASE::DATABASE_NAME TO [sa]。詳細については、これが私が使用したソースです:blog.sql-assistance.com/index.php/cannot-drop-the-user-dbo
SherlockSpreadsheets
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.