সমস্ত সঞ্চিত পদ্ধতিতে এক্সকিউট মঞ্জুর করুন


147

নিম্নলিখিত কমান্ডটি কার্যকরভাবে ব্যবহারকারীকে "মাই ইউজার" ডাটাবেসে সমস্ত সঞ্চিত পদ্ধতি কার্যকর করার অনুমতি দেয়?

GRANT EXECUTE TO [MyDomain\MyUser]

উত্তর:


244

এসকিউএল সার্ভার ২০০৮ এবং উপরে:

/* CREATE A NEW ROLE */
CREATE ROLE db_executor

/* GRANT EXECUTE TO THE ROLE */
GRANT EXECUTE TO db_executor

কেবল কোনও ব্যবহারকারীর জন্য (কোনও ভূমিকা নয়):

USE [DBName]
GO
GRANT EXECUTE TO [user]

28
+1 প্লাস: এটি ভবিষ্যতে সঞ্চিত প্রক্রিয়াগুলিকে এমনকি এক্সিকিউট অনুমতি দেয়, উদাহরণস্বরূপ যেগুলি এখনও আপনার ডাটাবেজে নেই - তবে পরে তৈরি করা হবে।
marc_s

2
আমি মনে করি এটি লক্ষণীয় যে আপনার userবর্গাকার বন্ধনীগুলির মধ্যে থাকতে পারে। এটি আমার ব্যবহারের ক্ষেত্রে কমপক্ষে অংশে সত্য ছিল কারণ আমার ব্যবহারকারীর একটি ডোমেন সংযুক্ত ছিল (যেমন এটিতে একটি \ চরিত্র ছিল)। সম্পাদনা করুন:
অনির্দিষ্ট না হওয়া

1
ব্যবহারকারীকে ডিবি_ড্ল্যাডমিন চরিত্রে কেন বরাদ্দ করবেন না? "Db_ddladmin ফিক্সড ডাটাবেস রোলের সদস্যগণ একটি ডাটাবেসে কোনও ডেটা সংজ্ঞা ভাষা (ডিডিএল) কমান্ড চালাতে পারবেন।" - এখানে দেখুন
মাইকেল টোবিচ

1
@ মিশেলটোবিশকে এখানে কেবল সঞ্চিত প্রক্রিয়া চালানো দরকার। ডিডিএল ভূমিকা অবশ্যই তৈরি, পরিবর্তন, ড্রপ, ... পরিস্থিতিতে ব্যবহার করা উচিত। এই লিঙ্কগুলি অবশ্যই কার্যকর হতে হবে: ডকস.মাইক্রোসফটি.এইন / ইউএস / এসকিএল
রিলেশনাল-

2
এবং ব্যবহারকারীকে ভূমিকার সাথে ভূমিকা রাখার পরবর্তী স্তরটি এটি কারও গবেষণার অন্য পদক্ষেপ সংরক্ষণ করে। পরিবর্তনের ভূমিকা db_executor আপনার ব্যবহারকারী নামটি এখানে সদস্য লিখুন
পিওয়াফ

72

এসকিউএল সার্ভার ২০০৫ ডাটাবেস নীতিতে ডাটাবেস সম্পাদনের অনুমতি দেওয়ার ক্ষমতা প্রবর্তন করেছিল , যেমনটি আপনি বর্ণনা করেছেন:

GRANT EXECUTE TO [MyDomain\MyUser]

এটি ডেটাবেস স্কোপে অনুমতি দেবে, যা স্পষ্টভাবে সমস্ত স্কিমায় সঞ্চিত সমস্ত পদ্ধতি অন্তর্ভুক্ত করে। এর অর্থ হল যে আপনাকে সঞ্চিত পদ্ধতিতে স্পষ্টভাবে অনুমতি দিতে হবে না।

আপনি আরও দানাদার হতে চাইলে আপনি স্কিমা এক্সিকিউট অনুমতিগুলি প্রদান করেও সীমাবদ্ধ করতে পারেন:

GRANT EXECUTE ON SCHEMA ::dbo TO [MyDomain\MyUser]

5
একটি নির্দিষ্ট স্কিমাতে এটি করতে সক্ষম
হওয়ায় দুর্দান্ত

17

উপরের উত্তরগুলি ছাড়াও, আমি যুক্ত করতে চাই:


পরিবর্তে আপনি এটিকে কোনও ভূমিকার জন্য মঞ্জুরি দিতে চাইতে পারেন এবং তারপরে ভূমিকা ব্যবহারকারীদের (গুলি) অর্পণ করুন। মনে করুন আপনি এর myAppRightsমাধ্যমে কোনও ভূমিকা তৈরি করেছেন

CREATE ROLE [myAppRights] 

তারপরে আপনি এর মাধ্যমে মৃত্যুদন্ড কার্যকর করতে পারেন

GRANT EXECUTE TO [myAppRights] 

যে ভূমিকা।


অথবা, যদি আপনি এটি স্কিমা স্তরে করতে চান :

GRANT EXECUTE ON SCHEMA ::dbo TO [myAppRights]

এছাড়াও কাজ করে (উদাহরণস্বরূপ, ভূমিকায় myAppRightsস্কিমার সমস্ত উপাদানগুলির dboপরে অধিকার কার্যকর করা হবে )।

এইভাবে, আপনাকে কেবল একবার এটি করতে হবে এবং আপনার যদি পরে এটিকে পরিবর্তন করতে হয় তবে ব্যবহারকারী সম্পর্কিত / সহজেই সম্পর্কিত সমস্ত অ্যাপ্লিকেশন অধিকারগুলি বরাদ্দ / বাতিল করতে পারেন - বিশেষত আপনি যদি আরও জটিল অ্যাক্সেস প্রোফাইল তৈরি করতে চান তবে দরকারী useful

দ্রষ্টব্য: আপনি যদি কোনও স্কিমাতে কোনও ভূমিকা প্রদান করেন তবে এটি পরে তৈরির উপাদানগুলিকেও প্রভাবিত করে - এটি আপনার পক্ষে নকশাকৃত নকশার উপর নির্ভর করে উপকারী হতে পারে না, তাই এটি মনে রাখবেন।


-5

[ভূমিকা] থেকে এক্সিকিউট মঞ্জুর করুন

এই অবশ্যই সাহায্য


আপনি জনগণের ভূমিকাতে মৃত্যুদণ্ড প্রদান করতে চান না, এটি সুরক্ষা উদ্বেগ প্রকাশ করে। এটি কেবল ব্যবহারকারী বা ভূমিকাকে মঞ্জুর করুন। নির্দিষ্ট প্রকোকে এক্সিকিউট দেওয়া মঞ্জুরি দেওয়া সবচেয়ে ভাল উপায় যাতে আপনি কাকে কী আঘাত করছে তা আপনি নিয়ন্ত্রণ করতে পারেন।
ammills01

প্রশ্নোত্তর সাইটের জন্য এখানে কটূক্তি উপযুক্ত নয়, বিশেষত যখন এটি সম্ভবত বিপজ্জনক ফলাফল দেয়।
ক্রিস্টোফার ব্রাউন 21

"প্রতিটি লগইন পাবলিক ফিক্সড সার্ভারের ভূমিকার সাথে সম্পর্কিত এবং প্রতিটি ডাটাবেস ব্যবহারকারী পাবলিক ডাটাবেস ভূমিকার অন্তর্ভুক্ত When সেই সুরক্ষিত "সুতরাং পাবলিকের কাছে কোনও অনুমতি দেওয়ার অর্থ সমস্ত ব্যবহারকারীকে সেই অনুমতিগুলি প্রদান করা। এটি একটি বড় দুর্বলতা। অতিরিক্তের জন্য এই লিঙ্কটি পড়ুন: ডকস.মাইক্রোসফট.ইন-
ইউএস

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