ขั้นตอนงาน SQL ทำงานเป็นบัญชี sql ที่แตกต่างกัน


11

ฉันอยากรู้วิธีตั้งค่าขั้นตอนงาน SQL เพื่อดำเนินการเป็นบัญชีเข้าสู่ระบบ SQL อื่น ดูเหมือนว่าฉันจะต้องตั้งค่าบัญชีพร็อกซีใหม่ซึ่งต้องใช้ข้อมูลรับรองที่มีอยู่ เมื่อฉันสร้างข้อมูลรับรองตัวเลือกเดียวของฉันคือการใช้ข้อมูลรับรองเข้าสู่ระบบ Windows

งานที่ฉันพยายามเรียกใช้อยู่ด้านล่าง มีคำสั่งเพิ่มเติมอื่น ๆ แต่เมื่อฉันตั้งค่าขั้นตอนงานให้ทำงานเป็นล็อกอิน SQL มันล้มเหลว

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

เมื่อสิ่งนี้ถูกเรียกใช้ผ่าน SQL Job Step มันจะล้มเหลว

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

ฉันไม่ชัดเจนว่าทำไมจึงพยายามเข้าถึงเซิร์ฟเวอร์ระยะไกลเมื่อตารางเหล่านี้ทั้งหมดอยู่ในฐานข้อมูลท้องถิ่น


ขั้นตอนงาน SQL มีการเชื่อมต่อกับอินสแตนซ์ SQL อยู่แล้ว ดังนั้นคุณต้องเปลี่ยนบริบทความปลอดภัยที่มีอยู่แทนที่จะทำการเชื่อมต่อใหม่ด้วยรหัสผ่าน หากคุณต้องการสร้างการเชื่อมต่อใหม่คุณสามารถใช้คำสั่ง sqlcmd หรือสคริปต์ PowerShell ซึ่งสามารถใช้เข้าสู่ระบบ SQL และรหัสผ่านเป็นพารามิเตอร์ภายในสคริปต์ แต่คุณควรพิจารณาสิ่งที่คุณต้องทำและว่า proc ที่จัดเก็บด้วยบริบทของตนเองจะเพียงพอหรือไม่
Rob Farley

คำตอบ:


15

หากคุณกำลังกำหนดค่าขั้นตอนงาน T-SQL ให้ไปที่หน้าขั้นสูงและกำหนดค่า "Run as user" เพื่อเข้าสู่ระบบที่คุณเลือก ป้อนคำอธิบายรูปภาพที่นี่

หากคุณกำลังทำงานกับขั้นตอนงานประเภทอื่นเช่น PowerShell จะต้องมีการกำหนดค่าบัญชีพร็อกซี


ฉันได้ลองแล้ว แต่ตอนนี้งานล้มเหลวโดยบอกว่า "การเข้าถึงเซิร์ฟเวอร์ระยะไกลถูกปฏิเสธเพราะบริบทความปลอดภัยในปัจจุบันไม่น่าเชื่อถือ" อย่างไรก็ตามถ้าฉันเรียกใช้สคริปต์ในขณะที่เข้าสู่ระบบในฐานะผู้ใช้ก็สามารถเรียกใช้งานได้ดี ไม่มีการเชื่อมโยงเซิร์ฟเวอร์ในการสืบค้นดังนั้นฉันจึงไม่เข้าใจว่าทำไมการอ้างถึงเซิร์ฟเวอร์ระยะไกล ความคิดใด ๆ
Geoff Dawdy

หากคุณสามารถเพิ่มคำถามของคุณสิ่งที่งานพยายามทำและข้อผิดพลาดที่แน่นอนจะช่วยให้เราชี้ให้คุณแก้ปัญหา

ในกรณีของฉันมันละเว้นการตั้งค่า ใช้ SQL 2012
Miguel Sv

1

ใช้EXECUTE ASตอนเริ่มต้นหรือสร้างกระบวนงานที่เก็บไว้ซึ่งดำเนินการในบริบทเฉพาะ


นี่อาจจะไม่ดี หากคุณต้องการโทรขั้นตอนการจัดเก็บกับผู้ใช้ที่ จำกัด ก็สามารถย้อนกลับไปยังสิทธิ์ดูแลระบบ (หรือเจ้าของงาน) การแก้ปัญหาจะใช้คุกกี้
Jens W.

ขั้นตอนการจัดเก็บที่สร้างขึ้นโดยใช้ตัวเลือก EXECUTE AS จะจัดการกับการยกระดับสิทธิ์และไม่อนุญาตให้ใครบางคนเปลี่ยนวิธีการส่วนหนึ่งผ่าน หากไม่มี proc ที่จัดเก็บไว้การเลียนแบบการเข้าสู่ระบบที่แตกต่างกันจะเป็นการหลอกลวงเช่นเดียวกับ EXECUTE AS ในตอนเริ่มต้นของสคริปต์
Rob Farley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.