הרשאה מוגבלת

24sharon

New member
הרשאה מוגבלת

אני מעוניינת לתת למשתמש הרשאה להכניס נתונים למסד הנתונים. elect scope_identity הוספתי משתמש ונתתי לו אפשרות להכנסת נתונים לטבלה מסוימת. העניין הוא שאני רוצה שישלוף את ערך הID אותו הוכנס. דוגמא לשאילתא
string strSQL = @"INSERT INTO [tblWebUsers] ([userPass] ,[userName] ,[userTZ] ,[userMail] ,[userTel] ,[acceptID]) VALUES (@userPass ,@userName ,@userTZ ,@userMail ,@userTel ,@acceptID); select scope_identity()";​
ואם אני נותנת לו אפשרות של צפיה בנתונים הוא יכול לצפות בערך הID, אך גם יכול לצפות בכל הרשומות בטבלה. האם יש לי אפשרות להגביל את ההרשאה להכנסה ולצפיה רק בנתון אותו הכניס המשתמש? תודה ויום טוב
 

גרי רשף

New member
באופן כללי כך

ב-SQL Server יש קבוע מערכת System_User המציין את שם המשתמש (כלומר- זה איתו הוא נכנס למערכת). תוכלי לבדוק זאת על ידי הרצת הפקודה Select System_User. יש לבנות View בסגנון של Select * From tblWebUsers T Where T.userName=System_User, לתת למשתמשים הרשאות קריאה ל-View ולבטל את הרשאות הקריאה על הטבלה, וכך כל אחד יוכל לראות רק את הרשומות שלו. אני משער שכרגע מה שמופיע בשדה userName אינו שם המשתמש במערכת אלא משהו אחר, ואז או שתדאגי שזה מה שיכנס, או שתוסיפי שדה שיקבל את ה-System_User כברירת מחדל, או שתצרי טבלת המרה ותבצעי Join בינה לבין הטבלה שלך. מקווה שלא סיבכתי אותך יותר מדי..
 

24sharon

New member
איך הספקת כבר לענות

בכל מקרה מצאתי את התשובה. יש אפשרות לתת הרשאות שליפה רק לשדה מסוים מבחינתי זה פתר לי את הבעיה תודה על הנסיון לעזור
 

גרי רשף

New member
אבל זה לא מה ששאלת..

כעת המשתמש יראה רק שדה אחד, אבל את כל השורות- כולל אלו שאחרים הכניסו. אני הבנתי ששאלת כיצד להגביל לגבי שורות מסויימות (בניגוד לעמודות/שדות מסויימות).
 

24sharon

New member
אמת זה לא בדיוק מה ששאלתי

אבל, מבחינתי לא אכפת לי שהמשתמש יראה את המספר הרץ
. נכון שהוא יוכל לראות את זה על כל השורות, אבל העיקר זה התוכן שבזה הוא מוגבל. תודה
 

24sharon

New member
ועוד שאלה

לאחרונה העברתי מסד נתונים משרת לשרת. את ההעברה ביצעתי על ידי IMPORT ואז עברתי טבלה טבלה להוסיף לה את הגדרות מפתח, מספור אוטומטי וערכי ברירת מחדל. העניין הוא שעכשיו הטבלאות שנוצרו יש להם 2 "יוצרים" (OWNERים) ברגע שאני יוצרת שאילתא רגילה של SELECT אני מקבלת כך:
SELECT.... FROM [myUser].[myUser].[acceptUsers]​
בעבר ענו כאן כבר איך אפשר לשנות את הDBO של הטבלה באופן גורף, אך זה נעלם עם החיפוש... אשמח למילות מפתח איך יש אפשרות להגדיר על טבלאות קיימות מי ה"בעלים" שלהם. תודה
 

ShlomoBenAri

New member
תנסי

כשאת מסמנת טבלאות בIMPORT ניתן לשנות את ה OWNER בשורה שנוצרת ממול
 

24sharon

New member
הטבלאות כבר יובאו

ואני לא מתכוונת כלל לייבא אותם מחדש. בעבר נתנו קוד אפשרי לשנות את הOWNER. בכל אופן תודה רבה
 
למעלה