সমস্ত টেবিলের পাঠ্য অ্যাক্সেসের অনুমতি দিতে ডাটাবেস ভূমিকা তৈরি করুন; কিছু অ্যাক্সেস লিখুন


9

আমাদের 1000 টিরও বেশি টেবিল সহ একটি ডাটাবেস রয়েছে। আমাকে এমন একটি ভূমিকা তৈরি করতে হবে যা কেবলমাত্র সমস্ত টেবিলগুলিতে পড়ার পাশাপাশি দুটি নির্দিষ্ট টেবিলের লেখার অ্যাক্সেসের অনুমতি দেয়।

আমি ডেটাবেস রোলগুলি নিয়ে ঘোরাঘুরি করছি, তবে যখনই আমি টেবিলগুলি যুক্ত করতে গিয়েছিলাম তখন আমাকে সমস্ত 1000 নির্বাচন করতে হবে ... এটি করার আরও ভাল উপায় আছে কি?


এটি আসলে সহজতম উপায় হতে পারে ... স্ক্রিপ্টের কোনও উপায় আছে এটি? যখনই আমরা এই ডেটাবেসগুলির মধ্যে একটি রিফ্রেশ করি তখন আমি সমস্ত সেটিংটি তাত্ক্ষণিকভাবে ফিরে পেতে পারি inst
ওয়েস

উত্তর:


9

স্কিমাতে অনুমতি প্রদান করা (উদাহরণস্বরূপ dbo) sche স্কিমায় থাকা সমস্ত বস্তুকে ক্যাসকেড করবে। পৃথক ব্যতিক্রমগুলির জন্য আপনি কেবল সেগুলি সুস্পষ্টভাবে তালিকাভুক্ত করতে পারেন:

GRANT SELECT ON SCHEMA::dbo TO [role];
GO

GRANT INSERT, UPDATE --, DELETE
  ON dbo.table_they_can_write_to TO [role];

DENY SELECT ON dbo.table_they_cannot_read TO [role];

3
যথেষ্ট সহজ খুশি হ'ল আমাদের মতো সম্প্রদায় আছে।
ওয়েস

1

এটা চেষ্টা কর :

EXEC sp_MSForEachTable 'GRANT INSERT, UPDATE ON ? to [ROLE]'

3
এফওয়াইআই এটি সমস্ত টেবিলগুলিতে লেখার বাইরে কোনও পাঠ্য অ্যাক্সেস দেয় না এবং স্কিমাকে পুরোপুরি উপেক্ষা করে। এছাড়াও sp_MSForEachTableঅননুমোদিত, অসমর্থিত এবং সম্ভবত একই স্কিপিং সমস্যাsp_MSForEachDB ভোগ করে
অ্যারন বারট্র্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.