回答:
これは、ログイン[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
aspnet_regsql -E -S .\MSSQLSERVER_R2 -ssadd
を使用してASPState
データベースを作成しました。そもそも気づいてさえいませんが、おそらくすでに設定されていると思います。
sys.server_principals
しsys.database_principals
ます。sysusers
そして、syslogins
下位互換性のためにのみ存在します。
それは「メタデータ」です...
データベースユーザーは、そのDBで何が起こっているかによって「破損」することがあります。(DBが復元され、復元されたコピーのロールが、オーバーレイに含まれていたロールと異なる場合、同様の動作を確認しました。これが、私が問題を解決した理由です。)
SSMSでログインプロパティを開きます->(セキュリティ|ログイン| 失敗したユーザーID |プロパティ|ユーザーマッピング)。おそらく、DBが既にチェックされており、ロールが割り当てられているのを見るでしょう(完全に通常のように)。
参考のために、エラーが発生したDBの権限に注意してください。
Cannot drop the user 'dbo'. (Microsoft SQL Server, Error: 15150)
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
dbo
が表示されているのがわかります。奇妙なことにdbo
、アカウントにを使用したことを覚えていませんR2Server\AAOUser
。次に何をすべきか疑問に思います。