TGViewer
کانال تخصصی SQLSERVER کانال تخصصی SQLSERVER @sqlserver_professional · 848 subscribers
Post #576 2.01K
سؤال:
من از function دارم استفاده می کنم و توی بعضی از سایتها یک گزینه ای وجود دارد به نام WITH EXECUTE AS CALLER البته این کد در function قرار دارد و من نمی دونم چه استفاده ای دارد ممنون می شوم شما من را راهنمایی کنید.

پاسخ1:

نحوه اجرای تابع از نظر دسترسی به منابع هست ... caller مقدار پیشفرض هست ... فرضا owner رو اگر بذارید معادل run as admin خودمون در ویندوز هست ... اگر سرچ بزنید داکیومنتش بشکل تفصیلی وجود دارد ...

پاسخ2:

سلام
👈فرض کنید شما یک SP در سیستم انبار محصول طراحی کرده اید که جهت ثبت سفارش استفاده می شود. این SP قرار است توسط یک سیستم دیگری مثلاً سیستم فروش اجرا شود. یعنی کاربر سیستم فروش، در زمان ثبت سفارش، بایستی با ارسال پارامترهایی(تعداد سفارش و ...) این SP رو اجرا کنه.
✍️در چنین شرایطی، با توجه به اینکه در SPثبت سفارش شما لازم است عملیات مختلفی مانند update، Insert و ... در چند جدول دیتابیس انبار انجام دهید لازم است تا یوزر فروش نیز به این جداول دسترسی داشته باشد!!!
👌پس نکته مهم این هست که اگر شما در یک sp،تریگر و ... عملیاتی رو روی آبجکت های دیتابیس انجام میدین، یوزری که اون sp، تریگر و ... رو اجرا می کنه هم باید دسترسی لازم به آبجکت هایی اشاره شده در طول SP و ... رو داشته باشه
کاملاً مشخص است که شما نمی تونید به ازای تک تک یوزرها، و یا سیستم های بیرونی چنین دسترسی هایی رو ایجاد کنید. اینجاس که از دستور with the EXECUTE AS استفاده می کنیم. که از sql2005 معرفی شده است

📎توضیح بیشتر:
در واقع به اضافه کردن with the EXECUTE AS به ابتذای یک SP، تریگر و ... جعل هویت (impersonation ) گفته می شود. یعنی با این کار شما دارین به sql server می گین که هر کسی(هر یوزری) که این Sp و... رو اجرا کرد، شما اینگونه در نظر بگیر که با سطح دسترسی مشخص شده داره عملیات موجود در sp و ... رو انجام می ده.

مثال:
CREATE PROCEDURE dbo.TestProcedure
WITH EXECUTE AS OWNER
بنابراین هر یوزری که TestProcedure رو اجرا کنه، مانند این هست که با سطح دسترسی OWNER داره دستورات داخل sp رو اجرا می کنه.
توجه داشته باشید در صورتیکه این دستور رو اضافه نکنیم بایستی برای تک تک یوزرهایی که نیاز به اجرای SP دارن به کلیه جداول و ... که در طول SP نوشته ایم دسترسی لازم رو بدهیم که این کار صحیح نیست.

مطالعه بیشتر در لینک های زیر:
1️⃣https://www.mssqltips.com/sqlservertip/1227/granting-permission-with-the-execute-as-command-in-sql-server/

2️⃣https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-clause-transact-sql

3️⃣https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-clause-transact-sql
Mssqltips Granting permission with the EXECUTE AS command in SQL Server One area that is often under utilized in SQL Server is issuing granular security rights at both a login and user level. It is often easier to just give someone more rights then they usually need to perform the task at hand versus trying to figure out exa
More from @sqlserver_professional
  1. Oct 29, 2022photo post
  2. Sep 13, 2022🗣🗣مژده، مژده: راه اندازی مجدد سایت codeeatsleep.ir با حمایت های خودتان، ما را در جهت انت…
  3. Apr 9, 2021Post #663
  4. Apr 4, 2021Post #662
  5. Mar 30, 2021عملیات انجام شده از زمان بروزرسانی یک رکورد، تا ثبت نهایی تغییرات بر روی دیسک
  6. Mar 30, 2021Post #660
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →