در مورد function در sql server
با سلام و خسته نباشید خدمت شما
من از function دارم استفاده می کنم و توی بعضی از سایتها یک گزینه ای وجود دارد به نام WITH EXECUTE AS CALLER البته این کد در function قرار دارد و من نمی دونم چه استفاده ای دارد ممنون می شوم شما Itpro عزیز من را راهنمایی کنید.
با تشکر
2 پاسخ
با سلام و خسته نباشید خدمت استاد عزیزم
خیلی محبت کردید که پاسخ جواب من را دادید لطف کردید.
جناب استاد منظور شما این هست که مثلا یک کاربری اجازه دسترسی به table1 را ندارد و ما از جدول table1 در فانکشن خود استفاده کرده ایم و وقتی کد WITH EXECUTE AS CALLER را بگذاریم یعنی اون کاربر می تونه از اون فانکشن استفاده بکنه آیا درست متوجه شده ام؟
با سلام
دوست عزیز دقت کنید بحث دقیقا بر اساس مجوزها یا همون Permission ها است
چطور ؟ ببینید همون طور که حتما اطلاع دارید ما می تونیم توی Sql Server کاربران مختلفی با دسترسی های مختلفی تعیین کنیم :
مثلا کاربر t1 رو تعریف کنیم و بهش فقط مجوز دسترسی به یک یا چندین Table و یا سایر اشیا ی دیتابیس یا همون سایر Object ها رو بدیم مثل جدول و توابع و فانکشن ها و ویوها و و و
پس کاربران رو تعریف می کنیم که بتونیم مجوزهای دسترسی رو کنترل کنیم خیلی خوب !
ببینید دقیقا از نسخه ی 2005 این مورد اضافه شده : Execute as که سه تا پارامتر خواهد گرفت :
caller : به کاربر فعلی که در حال حاضر در حال فراخوانی این تابع هست مجوزهای مربوطه داده شود : دقت کنید دقت کنید دقت کنید : ممکن به اون کاربر مجوز استفاده از اون جدول رو نداده باشیم فقط می خوایهیم این تابع به دسترسی اجرا بشه و گزارش و ببینه ولی با استفاده از این روش sql server دیگه به ما پیغام خطا نمیده و اجازه میده اون عملیات روی اون بخش که کاربر مجوز کار با اون رو نداره اجرا بشه
self : اعطای مجوز به سازندهی تابع کاربری که اون تابع رو ساخته
owner : اعطای مجوز در حد مالک این تابع
امیدوارم گیج نشده باشین .