เชื่อมต่อผู้ใช้ Windows ที่แตกต่างกันใน SQL Server Management Studio (2005 หรือใหม่กว่า)


333

มีวิธีใดใน SQL Server Management Studio 2005 (หรือใหม่กว่า) เพื่อเปลี่ยนผู้ใช้ Windows Authentication (อย่างที่คุณสามารถทำได้ใน SQL Server 2000 และเก่ากว่า)?

นี่คือไดอะล็อกคุณสมบัติการเชื่อมต่อทั่วไป (จดบันทึก UID / PWD สีเทาเมื่อเลือก Windows Auth):

โต้ตอบ

FYI - การแก้ปัญหาเพียงอย่างเดียวคือการใช้runasแต่ฉันกำลังมองหาโซลูชันที่จะช่วยให้ฉันทำงานกับบัญชี Windows หลายบัญชีผ่านเซิร์ฟเวอร์หลายเครื่อง (และในหลายโดเมน)


2
เท่าที่ฉันรู้ Run As ... เป็นวิธีเดียวที่จะบรรลุเป้าหมายนี้ ทำไมคุณไม่สามารถใช้ Run As ... และเพิ่งเริ่มเซสชันการจัดการสตูดิโอที่แตกต่างกันสำหรับผู้ใช้แต่ละคน
DCNYAM

4
RunAs ใช้งานได้เฉพาะในกรณีที่คุณอยู่ในโดเมนและ / หรือฟอเรสต์เดียวกัน หากคุณเป็นที่ปรึกษาคุณจะไม่เคยอยู่ในโดเมนเดียวกันและ / หรือฟอเรสต์ดังนั้นนี่จะเป็นคุณสมบัติที่ดี
Eric

ฉันรู้สึกถึงคุณเอริค บางครั้งฉันใช้ VMs กับไคลเอนต์เพื่อให้เครื่องเสมือนสามารถเป็นส่วนหนึ่งของโดเมน / ฟอเรสต์ของไคลเอ็นต์และทำให้ฉันทำงานได้อย่างราบรื่นมากขึ้นเล็กน้อย แต่ถ้าคุณทำงานกับหลายโดเมนอย่างน่าเบื่อ
Ed Altorfer

6
หลายโดเมนเป็นกรณีใช้งานเพียงครั้งเดียว อีกบริการหนึ่งคือ Windows Services ซึ่งเข้าสู่ระบบภายใต้บัญชีบริการของตนเองและนักพัฒนาที่ต้องการตรวจสอบการเชื่อมต่อ SQL, การอนุญาต, ฯลฯ ดูเหมือนว่าฉันโชคดีมาก . . อย่างน้อยเรามี runas
Matt P.

คำตอบ:


418

ในขณะที่ไม่มีวิธีการเชื่อมต่อกับเซิร์ฟเวอร์หลายเครื่องในฐานะผู้ใช้ที่แตกต่างกันในอินสแตนซ์เดียวของ SSMS สิ่งที่คุณกำลังค้นหาคือไวยากรณ์ RUNAS ต่อไปนี้:

runas /netonly /user:domain\username program.exe

เมื่อคุณใช้สวิตช์ "/ netonly" คุณสามารถเข้าสู่ระบบโดยใช้ข้อมูลประจำตัวระยะไกลบนโดเมนที่คุณยังไม่ได้เป็นสมาชิกแม้ว่าจะไม่ได้ตั้งค่าความน่าเชื่อถือ มันบอกเพียง runas ว่าข้อมูลประจำตัวจะถูกใช้สำหรับการเข้าถึงทรัพยากรระยะไกล - แอปพลิเคชันโต้ตอบกับคอมพิวเตอร์ในระบบในฐานะผู้ใช้ที่เข้าสู่ระบบในปัจจุบันและโต้ตอบกับคอมพิวเตอร์ระยะไกลในฐานะผู้ใช้ที่คุณได้รับข้อมูลรับรอง

คุณยังคงต้องใช้ SSMS หลายอินสแตนซ์ แต่อย่างน้อยคุณก็สามารถเชื่อมต่อกับผู้ใช้ windows ที่แตกต่างกันในแต่ละอันได้


ตัวอย่างเช่น: runas /netonly /user:domain\username ssms.exe


28
หากคุณต้องการโดเมนเดียวกัน แต่ผู้ใช้ที่แตกต่างกันเลื่อนสวิตช์ / netonly
jimconstable

5
สิ่งที่เกี่ยวกับสวิตช์ netonly เป็นสีทองอย่างแน่นอน หลายสถานการณ์ที่ฉันต้องการสิ่งนี้ ขอบคุณ
Jivko Petiov

7
+1 สำหรับวิธีที่สะดวกที่สุดในการทำสิ่งนี้ในปัจจุบัน ยังคงเป็นเรื่องที่เกินความคาดหมายที่ MS ไม่สามารถพับกล่องโต้ตอบล็อกอินสไตล์เดสก์ท็อป MSTSC / ระยะไกลเป็น SSMS และกำหนดค่าต่อการเชื่อมต่อ
Paul Smith

7
ว้าว! netonly! น่าอัศจรรย์ มันเป็นเรื่องตลกแม้ว่าเมื่อมันทำงานอยู่เมื่อคุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลที่มี Windows auth มันจะแสดงผู้ใช้ภายในเครื่องของคุณไม่ใช่ผู้ใช้ netonly ทำให้ดูเหมือนเวทมนตร์เมื่อเชื่อมต่อ ...
TTT

2
คำตอบด้านล่างจาก user175017 นั้นเหมาะกับฉันดูเหมือนง่ายกว่ามากและอนุญาตการเชื่อมต่อ windows เฉพาะเซิร์ฟเวอร์ในหนึ่งเซสชัน SSMS โดยย่อใน Win 7 ให้เรียกใช้ "Credential Manager" และเพียงเพิ่ม Windows Credentials สำหรับ <servername>: 1433 โดยที่ <servername> เป็นเครื่องเซิร์ฟเวอร์ SQL ที่ผ่านการรับรองอย่างเต็มรูปแบบ (เช่น MyServer.MyCompany.Com)
David Korn

161

shiftคลิกขวาค้างไว้ที่ไอคอน studion การจัดการเซิร์ฟเวอร์ SQL คุณสามารถเรียกใช้ในฐานะผู้ใช้บัญชี windows อื่น ๆ


31
น่าเสียดายที่นี่ใช้งานไม่ได้เมื่อบัญชีอยู่ในโดเมน / เครือข่ายอื่นซึ่งจะส่งคืนชื่อผู้ใช้ / รหัสผ่านที่ไม่ถูกต้อง คำสั่งดังกล่าวใช้งานได้ไม่ว่าบัญชีจะอยู่ในเครือข่ายอื่น
Jerad Rose

1
สิ่งนี้ได้ผลสำหรับฉัน! ในกรณีของฉันฉันมีสองบัญชีภายใต้โดเมนเดียวกัน
Tathagata

ทำงานได้ใน Windows 10
wrkwrk

ทำงานให้ฉันในโดเมนอื่น
Tahir Hassan

1
วิธีการเรียกใช้ในฐานะผู้ใช้บัญชี windows อื่น ๆ และในฐานะผู้ดูแลระบบ ?
Kiquenet

116

อีกวิธีหนึ่งที่ฉันค้นพบคือไปที่ "เริ่ม"> "แผงควบคุม"> "ชื่อผู้ใช้และรหัสผ่านที่เก็บไว้" (เครื่องมือการจัดการ> ตัวจัดการข้อมูลประจำตัวใน Windows 7) และเพิ่มบัญชีโดเมนที่คุณจะใช้กับคำสั่ง "runas" .

จากนั้นใน SQL Management Studio 2005 เพียงแค่เลือก "Windows Authentication" และป้อนเซิร์ฟเวอร์ที่คุณต้องการเชื่อมต่อ (แม้ว่าผู้ใช้ที่คุณเห็นว่า greyed out นั้นยังคงเป็นผู้ใช้ภายใน) ... และมันใช้งานได้!

อย่าถามฉันทำไม! :)

แก้ไข: ตรวจสอบให้แน่ใจว่าได้รวม ": 1433" หลังจากชื่อเซิร์ฟเวอร์ใน Credential Manager หรืออาจไม่เชื่อมต่อเนื่องจากไม่เชื่อถือโดเมน


10
สุจริตคำตอบนี้ควรจะทำเครื่องหมายไว้ วิธีการแก้ปัญหา runas ไม่ได้ผลสำหรับฉันและสร้างอาการปวดหัวใน smss ที่ไม่ต้องการเริ่มในคอนโซลซึ่งเป็นสิ่งที่เกิดขึ้นเมื่อคุณเรียกใช้ใน smss และแม้แต่ครั้งเดียวที่หยุดเกิดขึ้นก็ยังไม่ทำงาน แต่ตัวจัดการข้อมูลประจำตัว> เพิ่มข้อมูลรับรอง windows ป้อนชื่อเซิร์ฟเวอร์และชื่อผู้ใช้ DOMAIN \ user และรหัสผ่านของคุณ เช่นเดียวกับที่เขาพูดมันจะยังคงแสดงให้เห็นถึงผู้ใช้ท้องถิ่น แต่มันก็เชื่อมต่อ
Brian Arsuaga

16
คุณอาจต้องใช้ sqlserver.domain.com:1433 เป็นที่อยู่เครือข่าย ดูstackoverflow.com/questions/6944933
Greg Bray

7
อันนี้ใช้ได้จริงสำหรับฉันดูเหมือนง่ายกว่ามากและอนุญาตการเชื่อมต่อ windows เฉพาะเซิร์ฟเวอร์ในหนึ่งเซสชัน SSMS ฉันเพิ่งรัน "Credential Manager" และเพิ่ม Windows Credentials สำหรับ <servername>: 1433 โดยที่ <servername> เป็นเครื่อง SQL Server ที่ผ่านการรับรองอย่างสมบูรณ์ (เช่น MyServer.MyCompany.Com)
David Korn

1
runasวิธีการไม่ได้ทำงานสำหรับฉัน แต่นี้ไม่ได้ ตอนแรกฉันพยายามโดยไม่มีข้อมูลพอร์ตในข้อมูลประจำตัวผู้จัดการ แต่ฉันยังไม่สามารถเข้าสู่ระบบได้เมื่อฉันเพิ่มข้อมูลพอร์ตในข้อมูลประจำตัวผู้จัดการมันทำงานเหมือนมีเสน่ห์ ขอบคุณมากสำหรับเรื่องนี้!
René

1
นี่อาจเป็นทางออกที่หรูหราที่สุด ทำงานได้ใน Windows 8.1 สำหรับฉันที่เชื่อมต่อกับอินสแตนซ์แบบสแตนด์อโลนของ SQL 2012 ที่ไม่ได้เป็นส่วนหนึ่งของโดเมน <servername>: 1433
Tim Lehner

10

runas /netonly /user:domain\username program.exeคำสั่งเท่านั้นทำงานสำหรับฉันในWindows 10

  • บันทึกเป็นไฟล์แบตช์
  • เรียกใช้ในฐานะผู้ดูแลระบบ

เมื่อรันชุดคำสั่งในฐานะผู้ใช้ทั่วไปฉันได้รับปัญหารหัสผ่านผิดที่ผู้ใช้บางคนกล่าวถึงในความคิดเห็นก่อนหน้า


สิ่งนี้ใช้ได้สำหรับฉันเช่นกันไม่มีความสัมพันธ์แบบเชื่อถือได้ระหว่างโดเมน ฉันสามารถเริ่มต้น SSMS และเชื่อมต่อกับเซิร์ฟเวอร์ SQL โดยใช้บัญชีโดเมนอื่น ๆ (แม้ว่าใน UI จะบอกว่ามันจะใช้บัญชีโดเมนท้องถิ่น
Neil

10

ไม่มีคำตอบใด ๆ ที่ฉันต้องการ: ลงชื่อเข้าใช้เซิร์ฟเวอร์ระยะไกลโดยใช้บัญชีโดเมนที่แตกต่างจากที่ฉันลงชื่อเข้าใช้ในเครื่องของฉันและเป็นโดเมนของลูกค้าทั่ว VPN ฉันไม่ต้องการที่จะอยู่ในโดเมนของพวกเขา!

ในกล่องโต้ตอบเชื่อมต่อกับเซิร์ฟเวอร์ให้เลือก "Windows Authentication" คลิกปุ่มตัวเลือกจากนั้นบนแท็บพารามิเตอร์การเชื่อมต่อเพิ่มเติมให้ป้อน

user id=domain\user;password=password

SSMS จะไม่จดจำ แต่จะเชื่อมต่อกับบัญชีนั้น


สิ่งนี้ใช้ได้กับฉันใน SQL Server Management Studio 2017
natbob1

6

เวทมนตร์พาวเวอร์เชลเล็กน้อยจะทำเคล็ดลับ:

cmdkey /add:"SERVER:1433" /user:"DOMAIN\USERNAME" /pass:"PASSWORD"

จากนั้นเพียงเลือกการรับรองความถูกต้องของ windows


1

สำหรับ Windows 10: ไปที่ไอคอน Sql Management Studio หรือ Short Cut ในเมนู: คลิกขวา> เลือก Open File Location

ป้อนคำอธิบายรูปภาพที่นี่

กดปุ่ม Shift ค้างไว้แล้วคลิกขวาที่ไฟล์ลัดหรือไฟล์ ssms.exe ที่อยู่ในโฟลเดอร์ การกดค้างไว้จะทำให้คุณมีตัวเลือกเพิ่มเติม "เรียกใช้ในฐานะผู้ใช้อื่น":

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้จะปรากฏขึ้นในกล่องเข้าสู่ระบบและคุณสามารถพิมพ์ข้อมูลรับรองที่คุณต้องการให้เซสชันของคุณทำงานได้


0

มีหลายสถานที่ที่บางคนอาจต้องการปรับใช้สถานการณ์จำลองประเภทนี้ แต่เนื่องจากวิธีการตรวจสอบสิทธิ์แบบรวมใช้งานได้จึงไม่สามารถทำได้

การรับรองความถูกต้องแบบรวมใช้โทเค็นพิเศษที่สอดคล้องกับข้อมูลประจำตัว Windows ของคุณ มีวิธีการเข้ารหัสที่เรียกว่า "การแอบอ้าง" (อาจใช้โดยคำสั่งเรียกใช้เป็น ... ) ที่อนุญาตให้คุณทำกิจกรรมได้อย่างมีประสิทธิภาพในฐานะผู้ใช้ Windows รายอื่น แต่ไม่มีวิธีใดที่จะทำหน้าที่เป็นผู้ใช้อื่นโดยพลการ Linux) ในแอปพลิเคชัน Windows นอกเหนือจากนั้น

หากคุณจำเป็นต้องดูแลเซิร์ฟเวอร์หลายเครื่องในหลายโดเมนคุณอาจพิจารณาอย่างใดอย่างหนึ่งต่อไปนี้:

  1. ตั้งค่าDomain Trustระหว่างโดเมนของคุณเพื่อให้บัญชีของคุณสามารถเข้าถึงคอมพิวเตอร์ในโดเมนที่เชื่อถือได้
  2. กำหนดค่าผู้ใช้ SQL (โดยใช้การพิสูจน์ตัวตนแบบผสม) ในเซิร์ฟเวอร์ทั้งหมดที่คุณต้องการจัดการเพื่อให้คุณสามารถเข้าสู่ระบบได้ เห็นได้ชัดว่านี่อาจมีปัญหาด้านความปลอดภัยและสร้างฝันร้ายบำรุงรักษาหากคุณต้องเปลี่ยนรหัสผ่านทั้งหมดในบางจุด

หวังว่านี่จะช่วยได้!


เป็นไปไม่ได้เป็นสิ่งที่ผิด ... runas / netonly / ผู้ใช้: โดเมน \ ชื่อผู้ใช้ program.exe ทำงานได้ดี
Chris Pierce

-3

วิธีเดียวที่จะบรรลุสิ่งที่คุณต้องการคือการเปิด SSMS หลายอินสแตนซ์โดยคลิกขวาบนทางลัดและใช้คุณลักษณะ 'เรียกใช้เป็น'


3
วิธีเดียวหรือไม่ ไม่ใช่เลย.
Michel de Ruiter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.