วิธีรับ WINDOWS USER ภายใน EXECUTE AS OWNER

มีฟังก์ชั่นที่ส่งคืน WINDOWS USER (ไม่ใช่ผู้ใช้ฐานข้อมูล!) ภายในขั้นตอน "EXECUTE AS OWNER" หรือไม่?

ORIGINAL_LOGIN() จะทำสิ่งนี้หรือส่งคืนเฉพาะผู้ใช้ฐานข้อมูลเท่านั้น

พิจารณาสถานการณ์ต่อไปนี้:

  • ผู้ใช้ Windows "joe" และ "anne" เป็นส่วนหนึ่งของกลุ่ม Active Directory เช่น "นักวางแผน"
  • ฐานข้อมูลเซิร์ฟเวอร์ SQL มี "PLANNERS" เป็นการเข้าสู่ระบบเซิร์ฟเวอร์และเป็นผู้ใช้ฐานข้อมูล
  • มีขั้นตอนการจัดเก็บไว้โดยมีการดำเนินการในฐานะเจ้าของ

ตอนนี้แอนน์กำลังเข้าสู่ฐานข้อมูล SQL ผ่านทาง Windows Authentification (ดังนั้นเธอจึงเป็นผู้ใช้ฐานข้อมูล "PLANNERS") และเธอก็เรียกขั้นตอนนี้ ในขั้นตอนนี้ ฉันต้องการดึงข้อมูลผู้ใช้ Windows ("anne")


person Community    schedule 13.08.2014    source แหล่งที่มา
comment
คุณไม่เห็นชื่อ stackoverflow.com/questions/648166/ หากแอปพลิเคชันทำการเชื่อมต่อคุณสามารถเขียนผู้ใช้ nt ลงในบริบทเซสชันได้   -  person deterministicFail    schedule 13.08.2014
comment
ในคำถามนี้ เขาขอผู้ใช้เข้าสู่ระบบ SQL ในกรณีของฉัน เรากำลังเข้าสู่ระบบด้วย Windows Authentification ฉันจะแก้ไขคำถาม   -  person    schedule 13.08.2014
comment
ในเอกสารประกอบของ ORIGINAL_LOGIN() มันบอกว่า ORIGINAL_LOGIN returns the identity of the login that first connected to the instance of SQL Server in that session ดังนั้นนี่คือสิ่งที่คุณต้องการ msdn.microsoft.com/en-us/library/ms189492(v=sql.100).aspx   -  person deterministicFail    schedule 13.08.2014
comment
คุณสามารถใช้ SUSER_SNAME() ซึ่งจะส่งคืนชื่อล็อกอินที่เชื่อมโยงกับหมายเลขประจำตัวความปลอดภัย   -  person Bayeni    schedule 13.08.2014
comment
@deterministicFail - เพียงเพื่อพิจารณา: การเข้าสู่ระบบ Windows นั้นแตกต่างจากการเข้าสู่ระบบฐานข้อมูล! ฉันต้องการเข้าสู่ระบบ Windows! ORIGINAL_LOGIN ส่งมอบการเข้าสู่ระบบ Windows จริงหรือไม่ ปัญหาคือ ฉันไม่สามารถทดสอบได้อย่างเหมาะสมในสภาพแวดล้อมปัจจุบันของฉัน   -  person    schedule 13.08.2014


คำตอบ (1)


ORIGINAL_LOGIN() คือคำตอบที่ถูกต้อง

แค่ต้องการมันอีกครั้ง ;) ขอบคุณ @deterministicfail

person Community    schedule 26.04.2015