কীভাবে আমার সহকর্মী তার নিজস্ব স্কিমা পেয়েছিলেন?


14

আমার একটি সঞ্চিত পদ্ধতি রয়েছে যা:

  • কোনও টেবিলের উপস্থিতি আছে কিনা তা পরীক্ষা করে এবং যদি তা থাকে তবে এটি ড্রপ করে।
  • আবার সেই টেবিলটি তৈরি করে
  • তারপরে প্রায় 30 টি প্রশ্নের সাথে সেই টেবিলটি পূরণ করে।

যখন আমি (ডিবি মালিক) এই প্রকোপটি চালনা করি, সবকিছুই যেমন ইচ্ছা তেমন কাজ করে। যখন আমার সহকর্মী এটি করেন, সক্রিয় ডিরেক্টরিতে কোনও ভূমিকার মাধ্যমে এই ডাটাবেসে কার DROP / CREATE অধিকার রয়েছে, তখন বেশ কয়েকটি জিনিস ভুল হয়ে যায়। আমার মনের ভাবটি কী তা হ'ল:

টেবিল তৈরির dboক্ষেত্রে নামের আগে স্পষ্টভাবে নির্দিষ্ট করা স্কিমাটি নেই। এটি সারণী নামে একটি সারণী তৈরি হওয়ার ফলস্বরূপ domain\cowork_id.table_name_here। তার ব্যক্তিগত স্কিমে সেই টেবিলটি তৈরি হওয়ার পাশাপাশি, এখন তার ডাটাবেসেও সেই স্কিমা রয়েছে (এটি প্রোক চালানোর আগে উপস্থিত ছিল না)।

কি হলো? এসকিউএল সার্ভার dboযখন নির্দিষ্ট করা হয়নি তখন তার পরিবর্তে ব্যবহারকারীর স্কিমাগুলিতে টেবিলগুলি তৈরি করে ?


উত্তর:


26

একটি নিয়ম হিসাবে, আপনি যদি এই স্কিমাতে অবজেক্ট তৈরি করতে চান তবে আপনার স্পষ্টতইdbo স্কিমা নির্দিষ্ট করা উচিত ।

আপনি db_ownerযেমন রয়েছেন dbo, তেমনি আপনার ডিফল্ট স্কিমাটি রয়েছে , সুতরাং যখন আপনি ডিবিও স্কিমা নির্দিষ্ট করবেন না তখন কোনও সমস্যা নেই objects তবে অন্যান্য (উইন্ডোজ) ব্যবহারকারীদের ক্ষেত্রে এটি এক রকম নয়।

আপনার ব্যবহারকারীরা এর সদস্য Windows groupযে কোনও ডিফল্ট স্কিমা নেই। এই ক্ষেত্রে সংশ্লিষ্ট ব্যবহারকারী এবং স্কিমা তৈরি করা হয় যখন ব্যবহারকারী কোনও বস্তু তৈরি করে, এটি এখানে নথিবদ্ধ করা হয়েছে: স্কিমা তৈরি করুন (লেনদেন-এসকিউএল)

অন্তর্নিহিত স্কিমা এবং ব্যবহারকারী তৈরি

কিছু ক্ষেত্রে ব্যবহারকারী কোনও ডাটাবেস ব্যবহারকারীর অ্যাকাউন্ট (ডাটাবেজে ডাটাবেস অধ্যক্ষ) না রেখে ডাটাবেস ব্যবহার করতে পারেন। এটি নিম্নলিখিত পরিস্থিতিতে ঘটতে পারে:

একটি লগইনতে কন্ট্রোল সার্ভারের সুবিধা রয়েছে।

উইন্ডোজ ব্যবহারকারীর একটি পৃথক ডাটাবেস ব্যবহারকারীর অ্যাকাউন্ট নেই (ডাটাবেসে ডাটাবেস অধ্যক্ষ), তবে একটি উইন্ডোজ গ্রুপের সদস্য হিসাবে একটি ডাটাবেস ব্যবহার করে যার একটি ডাটাবেস ব্যবহারকারী অ্যাকাউন্ট রয়েছে (উইন্ডোজ গ্রুপের জন্য একটি ডাটাবেস অধ্যক্ষ)।

যখন কোনও ডাটাবেস ব্যবহারকারীর অ্যাকাউন্টবিহীন কোনও ব্যবহারকারী কোনও বিদ্যমান স্কিমা উল্লেখ না করে কোনও অবজেক্ট তৈরি করে, তখন সেই ব্যবহারকারীর ডাটাবেসে একটি ডাটাবেস অধ্যক্ষ এবং ডিফল্ট স্কিমা স্বয়ংক্রিয়ভাবে তৈরি হয়ে যায়। তৈরি করা ডাটাবেস প্রিন্সিপাল এবং স্কিমাতে এসকিউএল সার্ভারের সাথে সংযোগ করার সময় ব্যবহারকারীর নাম হিসাবে ব্যবহৃত একই নামটি হবে (এসকিউএল সার্ভার প্রমাণীকরণ লগইন নাম বা উইন্ডোজ ব্যবহারকারীর নাম)।

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

সমস্যাটি সমাধান করার জন্য সমস্ত ইয়ার ব্যবহারকারী-উইন্ডোজ গোষ্ঠী dboহিসাবে স্কিমা বরাদ্দ করুন default schemaবা অবজেক্ট তৈরি করার সময় স্কিমাটি স্পষ্টভাবে লিখুন। সর্বদা.

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