User: هویت تو داخل یک پایگاهدادهی مشخص
در درس قبل گفتیم Login فقط اجازهی ورود به سرور را میدهد. حالا برای اینکه آن Login بتواند داخل یک پایگاهدادهی خاص کاری انجام دهد (جدولی بخواند، ردیفی درج کند)، باید به یک User در همان پایگاهداده نگاشت شود. اگر Login را «کارت ورود به ساختمان» تصور کنی، User همان «کارت دسترسی به یک اتاق مشخص داخل ساختمان» است.
USE SchoolDB; CREATE USER ali_app FOR LOGIN ali_app;
این دستور باید داخل هر پایگاهدادهای که میخواهی همان Login به آن دسترسی داشته باشد، جداگانه اجرا شود. یک Login میتواند در پایگاهدادهی A، هیچ Userی نداشته باشد (پس اصلاً دسترسی ندارد)، در پایگاهدادهی B با نام دلخواه دیگری User داشته باشد، و همینطور برای هر پایگاهدادهای جداگانه تصمیم گرفته شود.
جدول رابطه: Login در برابر User
| Login | User | |
|---|---|---|
| محدوده | کل سرور (Instance) | یک پایگاهدادهی مشخص |
| سوالی که پاسخ میدهد | «اجازهی ورود به سرور را داری؟» | «داخل این پایگاهداده، چه اجازههایی داری؟» |
| محل ذخیره | پایگاهدادهی سیستمی master | خودِ همان پایگاهداده |
کاربر ویژه: dbo
dbo (مخفف Database Owner) یک User ویژه است که بهطور پیشفرض تمام اختیارات را روی پایگاهداده دارد. معمولاً Loginی که پایگاهداده را ساخته، بهطور خودکار به dbo نگاشت میشود. اشیای پایگاهداده (جدول، ویو، پروسیجر) که بدون schema صریح ساخته میشوند، معمولاً زیر schema پیشفرض dbo قرار میگیرند — همان چیزی که در نام کامل اشیا مثل dbo.Students دیدهای.
جمعبندی این درس
- User، هویت یک Login را در سطح یک پایگاهدادهی مشخص تعریف میکند.
- یک Login میتواند در پایگاهدادههای مختلف، Userهای متفاوت (یا اصلاً هیچ Useری) داشته باشد.
dboکاربر ویژهای است که مالکیت کامل پایگاهداده را دارد.
در درس بعدی میبینیم چطور بهجای مدیریت مجوز برای تکتک Userها، آنها را داخل Roles (نقشها) گروهبندی میکنیم.