এসকিউএল সার্ভারের প্রধান "ডিবিও" উপস্থিত নেই,


192

আমি নিম্নলিখিত ত্রুটি পাচ্ছি

Cannot execute as the database principal because the principal "dbo" 
does not exist, this type of principal cannot be impersonated,
or you do not have permission.

আমি এটি সম্পর্কে পড়েছি ALTER AUTHORIZATION, তবে এটি কোন ডাটাবেসে ঘটছে তা আমার কোনও ধারণা নেই This এই ত্রুটিটি খুব ঘন ঘন থেমে যাচ্ছে এবং প্রতিদিন প্রায় 1 জিবি করে ত্রুটি লগ বাড়িয়ে তোলে।


1
এটি সম্ভবত ডিবিএ সাইটের জন্য একটি প্রশ্ন, তবে ত্রুটিটি উপস্থিত হওয়ার সময় আপনি যদি আরও বেশি তথ্য দেন, তবে কোন আদেশটি কার্যকর করা যায় না তা আপনাকে সাহায্য করবে। এবং এই সমস্যা সহ এই ত্রুটির জন্য প্রচুর অনুসন্ধানের ফলাফল রয়েছে ; আপনি কি তাদের দিকে নজর রেখেছেন এবং তারা কি কোনওভাবেই আপনার পরিস্থিতি এবং কনফিগারেশনের সাথে মেলে?
পন্ডলাইফ

উত্তর:


410

আমি এই সমস্যাটিকে ডাটাবেসের মালিক সেট করে সমাধান করেছি। এই সমস্যাটির আগে আমার ডাটাবেসের কোনও মালিক ছিল না। সিসাদমিন অ্যাকাউন্টে মালিক সেট করতে আপনার ডাটাবেসে এই কমান্ডটি কার্যকর করুন:

use [YourDatabaseName] EXEC sp_changedbowner 'sa'

6
এখানে বিশদ নিবন্ধটি দেখুন: sqlserver-help.com/tag/…
orberkov

8
@ হারলিস্টাইলি, আপনার সমাধানটি আমার পক্ষে আসলে ভাল কাজ করেছে। আমার ডিবির মালিক বিটিডব্লিউ ছিল।
কেভান সাদরালোদাবাাই

আমি এই একই সমস্যা হচ্ছে। আমি @ হুরলেস্টাইলি দ্বারা এটি সম্পাদন করে ক্যোয়ারী চালানোর চেষ্টা করেছি তবে এটি কিছুই করেনি। যখন আমি চেক করেছিলাম dboতখনও ডিবি মালিক ছিল এবং আমি ডিবিওতে আর কিছু করতে পারি না। এটা সত্যিই হতাশ হয়ে উঠছে। আমি কোন জিনিস পরিবর্তন করতে পারি না।
ওয়াইরিমু মুরিগি

@ হুরলেস্টাইলি দয়া করে উত্তরের সম্পাদনা এবং পরিপূরক বিবেচনা করুন যাতে লোকেরা কমান্ড সিনট্যাক্সটি জানতে মন্তব্যগুলিতে দেখতে না পারা হয়।
ইউলিসেস আলভেস

2
@ হুরলিস্টাইলি হ্যাঁ, আমি দেখি সে করেছে। আমি মনে করি এইভাবে উত্তরটি নিজে থেকে আরও সম্পূর্ণ হয়ে ওঠে।
ইউলিসেস আলভেস

111

এখানে চিত্র বর্ণনা লিখুন

গ্রাফিকলি করুন

ডাটাবেস ডান ক্লিক করুন -> বৈশিষ্ট্য -> ফাইল -> নির্বাচন করুন ডাটাবেস মালিক -> নির্বাচন করুন [সা] - ঠিক আছে


আবারও এই উত্তরের পিছনে উল্লেখ করে আমার সমস্যার সমাধান করলেন।
6:56 এ টিপিংগ

এটি পেরেক! ধন্যবাদ!
আলেজান্দ্রব

আমাদের ডিবি বিভিন্ন এসকিউএল উদাহরণ থেকে পুনরুদ্ধার করেছিল। আমি এই পদক্ষেপটি অনুসরণ করেছি এবং এটি কার্যকর হয়েছে .. ধন্যবাদ!
ডটনেটভ্যালঞ্চে

35

11

এটি তখনও ঘটতে পারে যখন ডাটাবেসটি কোনও ভিন্ন এসকিউএল সার্ভার বা উদাহরণ থেকে পুনরুদ্ধার হয়। সেক্ষেত্রে, ডাটাবেসে থাকা সুরক্ষা অধ্যক্ষ 'ডিবিও' এসকিউএল সার্ভারের সুরক্ষা অধ্যক্ষের মতো নয়, যেখানে ডিবি পুনরুদ্ধার করা হয়েছিল। আমাকে জিজ্ঞাসা করবেন না আমি কীভাবে এটি জানি ...


আমি কীভাবে এটি সমাধান করতে আপনাকে জিজ্ঞাসা করতে পারি? হ্যাঁ, আমি ঠিক তাই করার চেষ্টা করছি। বিভিন্ন সার্ভারের মধ্যে ডাটাবেস চিত্রগুলি সরান এবং তারপরে ডাটাবেস বাস্তবায়ন করুন। আমি .bak ফাইলটি আমদানি করে ডায়াগ্রাম ফোল্ডারটি খোলার চেষ্টা করার পরে আমি এই ত্রুটিটি পেয়েছি।
বন্দুকধারীর

1
আরে, এটা আমার জন্য কাজ: dba.stackexchange.com/questions/50690/...
ironstone13

@ আয়রনস্টোন 13 আমার পক্ষে কাজ করে না। আমি বার্তা পেয়েছি যে আমি ডিবিও ছাড়তে পারি না
ওয়াইরিমু মুরিগি

8

এটি করার অন্য উপায়

ALTER AUTHORIZATION 
ON DATABASE::[DatabaseName]
TO [A Suitable Login];

6

নির্বাচিত উত্তর এবং কিছু অন্যান্য সমস্ত ভাল। আমি আরও একটি এসকিউএল বিশুদ্ধ ব্যাখ্যা দিতে চাই। এটি একই সমাধানে আসে যে কোনও (বৈধ) ডাটাবেস মালিক নেই।

dboত্রুটি হিসাবে উল্লিখিত ডাটাবেস মালিক অ্যাকাউন্ট সর্বদা ডাটাবেস দিয়ে তৈরি করা হয়। সুতরাং এটি অদ্ভুত বলে মনে হচ্ছে এটির অস্তিত্ব নেই তবে আপনি দুটি বাছাই করে পরীক্ষা করতে পারেন (বা একটি কিন্তু এটি সহজ রাখা যাক)।

SELECT [name],[sid] 
FROM [DB_NAME].[sys].[database_principals]
WHERE [name] = 'dbo'

যা dboDB_NAME ডাটাবেসে এবং ব্যবহারকারীদের এসআইডি দেখায়

SELECT [name],[sid] 
FROM [sys].[syslogins]

এই এসকিউএল সার্ভারের জন্য সমস্ত লগইন (এবং তাদের এসআইডি) দেখানোর জন্য show লক্ষ্য করুন যে এটি কোনও ডিবি_নাম উপসর্গ লিখেনি, কারণ এটি প্রতিটি ভিউজে একই তথ্য রয়েছে।

সুতরাং উপরের ত্রুটির ক্ষেত্রে এসআইডি-র সাথে লগইন হবে না যা ডাটাবেস ডিবিও ব্যবহারকারীর জন্য নির্ধারিত হয়েছে।

উপরে বর্ণিত হিসাবে যা সাধারণত অন্য কম্পিউটার থেকে ডেটাবেস পুনরুদ্ধার করার সময় ঘটে (যেখানে ডাটাবেস এবং ডিবিও ব্যবহারকারী বিভিন্ন লগইন দ্বারা তৈরি হয়েছিল)। এবং আপনি বিদ্যমান লগইনে মালিকানা পরিবর্তন করে এটি ঠিক করতে পারেন।


2

উপরেরটি যদি কাজ না করে তবে নিম্নলিখিত চেষ্টা করে দেখুন। এটি ডেটাবেসের জন্য মালিককে ভালভাবে সংজ্ঞায়িত করা অবস্থায়ও আমার সমস্যার সমাধান করেছিল।

এসকিউএল সার্ভার ২০০৮ এর প্রতিরূপ ব্যর্থ হয়েছে: প্রক্রিয়া 'sp_replCmds' কার্যকর করতে পারেনি


0

সুরক্ষার অধীনে, প্রিন্সিপালটিকে "লগইন ছাড়াই এসকিউএল ব্যবহারকারী" হিসাবে যুক্ত করুন, এটিকে অধ্যক্ষের মতো একই নামে স্কিমাটির মালিকানা করুন এবং তারপরে সদস্যপদে এটি ডিবি_উনার করুন।



0

এইচআর সেটআপের প্রাথমিক ডাটাবেসটি নয় - দুর্ঘটনাক্রমে কেবলমাত্র পঠনযোগ্য আয়নাতে একটি ডেটাবেস সংযোগ স্ট্রিং খাওয়ানোর সময়ও এই ত্রুটি হয়েছিল।


0

বার্তাটি যেমন বলেছে, আপনার ব্যবহারকারীর মালিক হিসাবে অনুমতি সেট করা উচিত। সুতরাং আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

ALTER AUTHORIZATION 
ON DATABASE::[YourDBName]
TO [UserLogin];

আশা করি সহায়ক! আপনার পক্ষে ঠিক থাকলে মন্তব্যটি দিন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.