PDA

View Full Version : نمایش دیتابیس های یک user



mehrdad_t
سه شنبه 19 دی 1385, 17:20 عصر
سلام دوستان

برای نمایش لیست دیتابیس هایی که یک login حق دسترسی به آنها را دارد چه query باید نوشت ؟

darvishiali
سه شنبه 19 دی 1385, 17:49 عصر
سلام؛

توی BOL ، PERMISSIONS function رو جستجو کن.
برای هر Permission ای یه کد استفاده میشه. مثلا کد 8 مال INSERT هستش.

برای کار خودت، باید اول مشخص کنی چه Permission هایی رو می خوای Userت داشته باشه. بعدش بر اساس اون Permission ها از تابع PERMISSIONS استفاده کنی. در ضمن، باید برای اینکه بوسیله این تابع مشخص کنی که آیا یوزر دسترسی به فلان عمل داره یا نه، باید باهاش به SQL کانکت بشی.

یه مثال برای اینکه بدونی یوزری که باهاش به SQL کانکت شدی، آیا INSERT Permission داره یا نه.


IF PERMISSIONS(OBJECT_ID('TableName'))&8=8
PRINT'YES'
else
PRINT'NO'

AminSobati
سه شنبه 19 دی 1385, 22:42 عصر
دوست عزیز منظورتون از حق دسترسی به دیتابیس دقیقا چیه؟ اگر Permissionهای داخل دیتابیس مد نظر باشه، در پست قبلی توضیح داده شده، اما اگر منظورتون اینکه که یک Login بخصوص، وارد چه دیتابیسهایی میتونه بشه (Use انجام بده) از sp_helplogins استفاده کنید

mehrdad_t
شنبه 23 دی 1385, 10:25 صبح
من برای یک user Control لازم دارم که حالتی مثل sql server درست کنم که وقتی یک کاربر login میکنه , فقط دیتابیس هایی رو ببینه که حق دسترسی به آنها را داشته باشه . نه این که تمامی دیتابیسها رو ببینه .

AminSobati
شنبه 23 دی 1385, 16:28 عصر
این رو آزمایش کنید:
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA

mehrdad_t
یک شنبه 24 دی 1385, 23:27 عصر
هنوز منظور من رو متوجه نشدید .

به عکسی که پیوست کردم نگاه کنید .

یک Query که برای هر کاربر sql server که وارد میشه فقط دیتابیس هایی رو نشون بده که حق دسترسی به آنها را داره .

AminSobati
دوشنبه 25 دی 1385, 20:57 عصر
در SQL Server 2005 میشه این کار رو انجام داد:
DENY VIEW ANY DATABASE TO MyLogin
اگرچه کاربر در این حالت هیچ دیتابیسی (حتی دیتابیسی که در اون Username داره) رو نمیتونه ببینه اما دیتابیسهای مجاز رو میتونه Use کنه و واردشون بشه