Giriş zaten farklı bir kullanıcı adı altında bir hesaba sahip


29

Bu SQL'i çalıştırdığımda:

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

Aşağıdaki hatayı alıyorum:

Giriş zaten farklı bir kullanıcı adı altında bir hesaba sahip.

Giriş hesabım için bu farklı kullanıcı adının ne olduğunu nasıl bilebilirim ?

Yanıtlar:


31

Bu, [R2Server \ AAOUser] girişinin o veritabanındaki bir kullanıcıyla zaten eşleştirildiği anlamına gelir. Başka bir deyişle, başka bir veritabanı kullanıcısı bu girişi kullanıyor. Giriş bilgilerinizi hangi veritabanı kullanıcısının aşağıdaki sorguyla kullandığını görebilirsiniz:

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

Not: Komut dosyasının uyumluluk görünümlerini kullanmayan bir sürümü:

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

Tamam, dbogörüntülenmekte olan değeri görüyorum . Garip, dbohesabımı kullandığımı hatırlamıyorum R2Server\AAOUser. Sonra ne yapmam gerektiğini merak ediyorum.
Jack,

4
Sunucuya bağlanmak için bu girişi kullanarak veritabanını oluşturdunuz mu? Eğer öyleyse, o zaman db'nin sahibisin ve başka bir kullanıcı oluşturmana gerek yok Sen zaten ayarladın.
Marian,

Aslında, veritabanını aspnet_regsql -E -S .\MSSQLSERVER_R2 -ssaddoluşturmak için komutu kullandım ASPState. Muhtemelen, çoktan ayarlanmış olduğumu düşünüyorum bile, ilk başta fark etmedim bile.
Jack,

Tahmin et ne: "-E -> Geçerli Windows kimlik bilgileriyle kimlik doğrula." :-)
Marian

4
Ben kullanırım sys.server_principalsve sys.database_principals. sysusersve sysloginsyalnızca geriye dönük uyumluluk için var.
Aaron Bertrand

4

Bu bir 'meta veri olayı' ...

Bazen veritabanı kullanıcısı, o DB’de olup bitenler boyunca “bozuluyor”. (DB geri yüklenirse benzer davranışlar gördüm ve geri yüklenen kopyadaki roller üst üste bindiklerinizden farklı. Bu yüzden aşağıda denedim, bu sorunu benim için çözdü.)

  1. Oturum açma özelliklerini SSMS -> (Güvenlik | Logins | başarısız UserID | Properties | User Mapping) ile açın. Muhtemelen DB'lerin daha önce kontrol edilmiş olduğunu ve Rollerin atandığını (tamamen normal gibi) göreceksiniz.

  2. Yalnızca başvuru amacıyla DB üzerinde hata veren izinleri not alın.

  3. Bu DB'nin işaretini kaldırın ve girişi kaydedin.
  4. Şimdi Giriş / Rolü hedef DB'ye eklemek için sorgunuzu yeniden çalıştırın. Sadece iyi çalışması gerekir.

2
3. adıma Cannot drop the user 'dbo'. (Microsoft SQL Server, Error: 15150)
geçtiğimde

Ayrıca Cannot drop the user 'dbo'.hata mesajını da aldım . Ben sorunlu kullanıcı eşlemesi kaldırılır ve bu sorunu düzeltti bu komut dosyası, ran: USE DATABASE_NAME; ALTER AUTHORIZATION ON DATABASE::DATABASE_NAME TO [sa]. Daha fazla bilgi için bu kullandığım kaynağıdır blog.sql-assistance.com/index.php/cannot-drop-the-user-dbo
SherlockSpreadsheets
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.