באופרטור Execute As אני משתמש בדרך כלל כשלמשתמשים "הרגילים" יש בעיית הרשאות שלי אין מכיוון שאני אדמיניסטרטור, ולרוב אינם יכולים לציין היכן הבעייה מכיוון שאינם DBA-ים ואת הקודים אינם מפעילים ישירות מה-SSMS אלא ממסכים שנכתבו בדוט-נט. אני מזדהה איפוא בתור משתמש רגיל, ומקבל הודעת שגיאה ב-SSMS שמאפשרת לי לזהות מה הבעייה.
אתמול שברנו את הראש שעה ארוכה בגלל בעייה כזו: הרצתי את הפרוצדורה הרלוונטית, וקיבלתי שגיאה בפנייה לטבלה בשרת אחר דרך Linked Server. השגיאה הייתה תמוהה מכיוון שה-Linked Server הוגדר בתור Be made using security context
כלומר – כל מי שפונה דרך ה-Linked Server מזדהה בשרת האחר בהתאם ל-Login ולסיסמה שהוגדרו, וההרשאות לאדמיניסטראטור ולאחרון המשתמשים – זהות.
לא אלאה אתכם בתיאור שלל הקללות שעשיתי בהן שימוש ללא הועיל, עד שהתברר שהבעייה המקורית אינה ב-Linked Server: השימוש באופרטור Execute As גרם לשגיאה, כנראה מפני שהוא ניסה לעקוף את ההגדרות ולהתחבר לשרת האחר עם המשתמש איתו התחברתי.. הבעייה המקורית הייתה פקודת Truncate שלמשתמש לא היו הרשאות עבורה והיא נפתרה במקום. השימוש ב-Execute As עם Linked Server יצר בעצמו בעייה שאותה לקח זמן רב לגלות..