কোনও ডেটাবেসের অনুমতি তৈরি করুন বনাম ডেটাবেস তৈরি করুন


21

মাইক্রোসফ্ট এসকিউএল সার্ভারে CREATE DATABASEএবং CREATE ANY DATABASEঅনুমতিগুলির মধ্যে পার্থক্য কী ?

আমি কোনও অনুমোদিত উত্তর খুঁজে পেতে অক্ষম। আমি যে সর্বোত্তমটি নির্ধারণ করতে পারি তা হ'ল হয় (ক) CREATE ANYবোঝায় আমি অন্য ব্যবহারকারীর মালিকানাধীন ডেটাবেস তৈরি করতে পারি , যেখানে CREATEআমি পারি না, বা (খ) সিব্যাস / আদি এসকিউএল সার্ভারের দিনের মূল অনুমতিটি ছিল CREATE ANYএবং এর CREATEজন্য বিকল্পযুক্ত ছিল এএনএসআই কনফারেন্স।


হারুন যা বলেছিল তা প্রতিধ্বনি করছে, +1 তবে আপনার সম্পাদনাটি কাটা উচিত, উত্তর হিসাবে এটি আটকে দিন, তারপরে এটি গ্রহণ করুন। দুটি কারণ: এটি উত্তরটি কী তা স্পষ্ট করে (এবং আপনার সম্পাদনাটি একটি দুর্দান্ত উত্তর) এবং এটি আরও সুন্দর (উত্তর না দেওয়া প্রশ্নগুলি মাঝে মাঝে আরও মনোযোগ দেওয়ার জন্য শীর্ষে টান পড়ে)।
সাইমন রিঘার্টস

1
সম্পন্ন হয়েছে, তবে আমি আগামীকাল পর্যন্ত এটি গ্রহণ করতে পারি না, এবং আমি গতকাল কোনও উত্তর পোস্ট করতে পারিনি (<100 রিপ্রেসের জন্য স্ব-উত্তরের 5-ঘন্টা সীমা)।
তোহউউ

উত্তর:


21

আমি বিশ্বাস করি যে প্রামাণ্য উত্তরটি আমি পেয়েছি, যা এই নিবন্ধে সরবরাহিত সারণী দ্বারা ব্যাপকভাবে সহায়তা করেছে: http://msdn.microsoft.com/en-us/library/ms178569.aspx । এটি দেখে মনে হবে যে ক্রিয়েট ডেটাবেস হ'ল এএনএসআই এসকিউএল সম্মতিযুক্ত অনুমতি, যখন কোনও ডেটাবেস একটি এমএসএসকিউএল মালিকানাধীন সার্ভার অনুমতি। তবে দু'জন এক নয়। আসলে, দুজনের মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে এবং আমি এটি চেষ্টা করে খুঁজে পেয়েছি।

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

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

দুটি অনুমতিগুলির মধ্যে পার্থক্যটি আরও চিত্রিত করার জন্য, কোনও ব্যবহারকারীকে মাস্টার বনাম অন্য ডাটাবেসে ক্রিয়েট ডেটাবেস প্রদান করে পৃথক পৃথক বার্তাগুলি পর্যবেক্ষণ করুন, তারপরে ধুয়ে ফেলুন এবং অনুমতিটির জন্য কোনও ডেটাবেস তৈরি করুন repeat

use master; GRANT CREATE DATABASE to TestUser

এমএসজি 15151, স্তর 16, রাজ্য 1, লাইন 1 ব্যবহারকারী 'টেস্ট ইউজার' খুঁজে পাচ্ছে না, কারণ এটি বিদ্যমান নেই বা আপনার অনুমতি নেই।

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

use master; GRANT CREATE ANY DATABASE to TestUser

কমান্ড (গুলি) সফলভাবে সম্পন্ন হয়েছে।

এটি সফল হয় কারণ মাইক্রোসফ্ট এসকিউএল সার্ভারের অনুমতি হিসাবে, বর্তমানে ব্যবহৃত ডাটাবেসের কেবলমাত্র ব্যবহারকারীরা নয়, কোনও ডেটাবেস এসকিউএল উদাহরণের জন্য লগইনগুলির তালিকার সাথে পরামর্শ করতে পারে।

use test; GRANT CREATE DATABASE to TestUser

এমএসজি 15151, স্তর 16, রাজ্য 1, লাইন 1 ব্যবহারকারী 'টেস্ট ইউজার' খুঁজে পাচ্ছে না, কারণ এটি বিদ্যমান নেই বা আপনার অনুমতি নেই।

এটি প্রথম উদাহরণের জন্য আমার ব্যাখ্যাটির ধারাবাহিকতা প্রদর্শন করে। নীচের ক্যোয়ারী এবং এর ফলাফল ত্রুটি বার্তা নোট করুন। আপনি যদি প্রথম এই ডাটাবেসে ব্যবহারকারী তৈরি করেন তবে আপনি এই ত্রুটি বার্তাটি পাবেন না (শেষ প্রশ্নটি দেখুন)।

use test; GRANT CREATE ANY DATABASE to TestUser

এমএসজি 4621, স্তর 16, রাজ্য 10, লাইন 1 সার্ভার স্কোপে অনুমতিগুলি কেবল তখনই দেওয়া যেতে পারে যখন বর্তমান ডাটাবেসটি মাস্টার হয়

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

use test; create user TestUser; grant create database to TestUser

স্রেফ ডেটাবেসের অনুমতি কেবলমাত্র মাস্টার ডাটাবেসে দেওয়া যেতে পারে। এমএসজি 0, স্তর 11, রাজ্য 0, লাইন 0 বর্তমান কমান্ডটিতে একটি গুরুতর ত্রুটি ঘটেছে। ফলাফল, যদি থাকে, বাতিল করা উচিত।

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

ভাল, এটা মজা ছিল।

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