লগইন ইতিমধ্যে একটি পৃথক ব্যবহারকারীর নামের অধীনে একটি অ্যাকাউন্ট আছে


29

যখন আমি এই এসকিউএল কার্যকর করি:

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

পিএস: স্ক্রিপ্টটির একটি সংস্করণ যা সামঞ্জস্যতা দর্শনগুলি ব্যবহার করে না:

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

ঠিক আছে, আমি মানটি dboপ্রদর্শিত হচ্ছে। স্ট্রেঞ্জ, আমি মনে করতে পারছি না আমি ব্যবহার আছে dboআমার অ্যাকাউন্টের জন্য R2Server\AAOUser। আমার কী করা উচিত তা ভাবছি।
জ্যাক

4
আপনি সার্ভারের সাথে সংযোগ করতে লগইনটি ব্যবহার করে ডেটাবেস তৈরি করেছেন? যদি হ্যাঁ, তবে আপনি এর ডিবি মালিক এবং অন্য কোনও ব্যবহারকারী তৈরি করার দরকার নেই। আপনি ইতিমধ্যে সেট করেছেন।
মারিয়ান

আসলে, আমি ডাটাবেস aspnet_regsql -E -S .\MSSQLSERVER_R2 -ssaddতৈরি করতে কমান্ডটি ব্যবহার করেছি ASPState। আমি সম্ভবত মনে করি, আমি ইতিমধ্যে সেট হয়েছি, যদিও আমি এমনকি এটি প্রথম স্থানে বুঝতে পারি না।
জ্যাক

কী অনুমান করুন: "-E -> বর্তমান উইন্ডোজ শংসাপত্রগুলির সাথে প্রমাণীকরণ করুন" " :-)
মারিয়ান

4
আমি ব্যবহার করব sys.server_principalsএবং sys.database_principalssysusersএবং sysloginsকেবল পিছিয়ে সামঞ্জস্যের জন্য রয়েছে।
অ্যারন বার্ট্র্যান্ড

4

এটি একটি 'মেটাডাটা জিনিস' ...

কখনও কখনও ডাটাবেস ব্যবহারকারী যে ডিবিতে যা চলছে তার চলাকালীন 'দূষিত' হয়ে যায়। (আমি যদি ডিবি পুনরুদ্ধার হয়ে যায় তবে আমি একইরকম আচরণ দেখেছি এবং পুনরুদ্ধারকৃত অনুলিপিগুলির ভূমিকাগুলি আপনার ওভারলাইডের চেয়ে আলাদা। এই কারণেই আমি নীচে চেষ্টা করেছি, যা আমার জন্য সমস্যাটি স্থির করেছে।)

  1. এসএসএমএসে লগইন বৈশিষ্ট্যগুলি খুলুন -> (সুরক্ষা | লগইনস | ব্যর্থ ইউজারআইডি | সম্পত্তি | ব্যবহারকারী ম্যাপিং)। আপনি সম্ভবত দেখতে পাবেন যে ডিবি এরই মধ্যে চেক হয়েছে এবং এর জন্য ভূমিকা নিযুক্ত করা হয়েছে (পুরোপুরি স্বাভাবিকের মতো)।

  2. কেবল রেফারেন্সের জন্য ডিবিতে ত্রুটি দেওয়ার অনুমতিগুলি নোট করুন।

  3. সেই ডিবিটি আনচেক করুন এবং লগইনটি সংরক্ষণ করুন।
  4. লক্ষ্য ডিবিতে লগইন / ভূমিকা যুক্ত করতে এখন আপনার ক্যোয়ারীটি আবার চালান। এটি ঠিক কাজ করা উচিত।

2
আমি যখন 3 ধাপে 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-DP-theuser-dbo
শার্লক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.