ชื่อหลักเป้าหมายไม่ถูกต้อง ไม่สามารถสร้างบริบท SSPI


96

ฉันกำลังดิ้นรนเพื่อรับการเชื่อมต่อ SQL Server จากเครื่อง A ไปยังเครื่อง B ซึ่งกำลังเรียกใช้ SQL Server

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

เราไม่ได้ใช้ Kerberos แต่เป็น NTLM ที่กำหนดค่าไว้

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

เครื่องที่เกี่ยวข้อง ได้แก่ (xx ใช้เพื่อปิดบังชื่อเครื่องบางส่วนเพื่อความปลอดภัย):

  • xxPRODSVR001 - ตัวควบคุมโดเมนของ Windows Server 2012
  • xxDEVSVR003 - Windows Server 2012 (เครื่องนี้กำลังสร้างข้อผิดพลาด)
  • xxDEVSVR002 - Windows Server 2012 (เครื่องนี้กำลังเรียกใช้ SQL Server 2012)

SPN ต่อไปนี้ลงทะเบียนบน DC (xxPRODSVR001) ฉันได้ปิดบังโดเมนด้วย yyy เพื่อความปลอดภัย:

ServicePrincipalNames ที่ลงทะเบียนสำหรับ CN = xxDEVSVR002, CN = คอมพิวเตอร์, DC = yyy, DC = local:

            MSSQLSvc/xxDEVSVR002.yyy.local:49298

            MSSQLSvc/xxDEVSVR002.yyy.local:TFS

            RestrictedKrbHost/xxDEVSVR002

            RestrictedKrbHost/xxDEVSVR002.yyy.local

            Hyper-V Replica Service/xxDEVSVR002

            Hyper-V Replica Service/xxDEVSVR002.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR002

            Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR002

            Microsoft Virtual Console Service/xxDEVSVR002.yyy.local

            SMTPSVC/xxDEVSVR002

            SMTPSVC/xxDEVSVR002.yyy.local

            WSMAN/xxDEVSVR002

            WSMAN/xxDEVSVR002.yyy.local

            Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local

            TERMSRV/xxDEVSVR002

            TERMSRV/xxDEVSVR002.yyy.local

            HOST/xxDEVSVR002

            HOST/xxDEVSVR002.yyy.local

ServicePrincipalNames ที่ลงทะเบียนสำหรับ CN = xxDEVSVR003, CN = คอมพิวเตอร์, DC = yyy, DC = local:

            MSSQLSvc/xxDEVSVR003.yyy.local:1433

            MSSQLSvc/xxDEVSVR003.yyy.local

            Hyper-V Replica Service/xxDEVSVR003

            Hyper-V Replica Service/xxDEVSVR003.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR003

            Microsoft Virtual System Migration Service/xxDEVSVR003.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR003

            Microsoft Virtual Console Service/xxDEVSVR003.yyy.local

            WSMAN/xxDEVSVR003

            WSMAN/xxDEVSVR003.yyy.local

            TERMSRV/xxDEVSVR003

            TERMSRV/xxDEVSVR003.yyy.local

            RestrictedKrbHost/xxDEVSVR003

            HOST/xxDEVSVR003

            RestrictedKrbHost/xxDEVSVR003.yyy.local

            HOST/xxDEVSVR003.yyy.local

ตอนนี้ถ้ามีเพียงข้อความแสดงข้อผิดพลาดของ SQL Server เท่านั้นที่อธิบายได้มากขึ้นและบอกฉันว่าชื่อหลักที่พยายามเชื่อมต่อกับฉันอาจจะวินิจฉัยสิ่งนี้ได้

มีใครช่วยแนะนำวิธีแก้ปัญหานี้ให้หน่อยได้ไหมหรือคุณเห็นอะไรในสิ่งที่ฉันระบุว่าผิด

ฉันยินดีที่จะสร้างข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติมเพียงบอกสิ่งที่คุณต้องการ


เราไม่เรียกใช้เซิร์ฟเวอร์ DNS ภายใน แต่เพื่อขจัดปัญหานี้คุณกำลังบอกว่าฉันควร "ping -a xxxx" หรือมีวิธีอื่นในการตรวจสอบว่ามีรายการซ้ำหรือไม่
TheEdge

ฉันไม่ใช่ผู้เชี่ยวชาญ แต่ฉันคิดว่า SPN และ SSPI เป็นสิ่งที่ Kerberos? แน่ใจหรือว่าคุณไม่ได้ใช้ Kerberos
Dylan Smith

@DylanSmith ไม่ใช่ว่าฉันจะเห็น ..... เมื่อฉันรัน SP ใน SQL Server (ลืมชื่อตอนนี้) มันขึ้นมาเป็น NTLM คุณรู้ไหมว่าฉันตรวจสอบอย่างไร?
TheEdge

ฉันรู้ว่าคำถามเก่าดังนั้นประหยัดเวลาและเรียกใช้เครื่องมือนี้: microsoft.com/en-us/download/…
Eduardo

คำตอบ:


59

ฉันมีปัญหากับแอป ASP.NET MVC ที่ฉันใช้งานอยู่

ฉันเพิ่งรู้ว่าเพิ่งเปลี่ยนรหัสผ่านและฉันสามารถแก้ไขได้โดยออกจากระบบและกลับเข้าสู่ระบบอีกครั้ง


1
นี่คือปัญหาของฉัน เปลี่ยนรหัสผ่านแล้ว มีบัญชีของฉันที่ใช้งานแอปพูล
Dragos Durlut

เมื่อฉันมีปัญหานี้ฉันออกจากระบบและกลับเข้าสู่ระบบ แก้ไขปัญหาแล้ว
shary.sharath

ปัญหาที่คล้ายกัน สิ่งนี้ช่วยให้ฉันมองย้อนกลับไปที่การกระทำของฉัน TQ
Reddy

26

ฉันได้รับข้อผิดพลาดนี้เมื่อเชื่อมต่อผ่าน SQL Server Management Studio โดยใช้ Windows Authentication รหัสผ่านของฉันหมดอายุ แต่ฉันยังไม่ได้เปลี่ยน เมื่อเปลี่ยนแล้วฉันต้องออกจากระบบและกลับเข้าสู่ระบบเพื่อให้เครื่องทำงานโดยใช้ข้อมูลรับรองใหม่ของฉัน


1
ฉันมีปัญหานี้ รหัสผ่านของฉันหมดอายุฉันเปลี่ยนรหัสในขณะที่ล็อกอินจากนั้นพยายามเชื่อมต่อ แต่พบข้อผิดพลาดนี้ จากนั้นฉันก็ล็อคเครื่องของฉันจากนั้นปลดล็อคด้วยรหัสผ่านใหม่ของฉันและฉันก็สามารถเชื่อมต่อได้อีกครั้ง
bgura

1
การรีบูตเครื่องไม่จำเป็นต้องใช้เคล็ดลับ แต่ดูเหมือนว่าการล็อก / ปลดล็อกจะเป็น
Andrew Brick เมื่อ

23

ลองตั้งค่าIntegrated Security=trueเพื่อลบพารามิเตอร์นี้ออกจากสตริงการเชื่อมต่อ


สำคัญ:ตามที่ผู้ใช้ @Auspex แสดงความคิดเห็น

การลบ Integrated Security จะป้องกันข้อผิดพลาดนี้เนื่องจากข้อผิดพลาดเกิดขึ้นเมื่อพยายามเข้าสู่ระบบด้วยข้อมูลประจำตัว Windows ของคุณ น่าเสียดายที่ส่วนใหญ่คุณต้องการเข้าสู่ระบบด้วยข้อมูลรับรอง Windows ของคุณ


คุณจะลบสิ่งนั้นได้อย่างไรหากการเชื่อมต่อผ่าน SSMS?
Geoff Dawdy

25
การลบออกอย่างชัดเจนIntegrated Security จะป้องกันข้อผิดพลาดนี้เนื่องจากข้อผิดพลาดเกิดขึ้นเมื่อพยายามเข้าสู่ระบบด้วยข้อมูลรับรอง Windows ของคุณ น่าเสียดายที่ส่วนใหญ่คุณต้องการเข้าสู่ระบบด้วยข้อมูลรับรอง Windows ของคุณ!
Auspex

2
@GeoffDawdy คำตอบของฉันด้านล่างอาจช่วยได้? เป็นเพราะรหัสผ่านที่หมดอายุทำให้ฉันต้องเปลี่ยนรหัสผ่านออกจากระบบและกลับเข้ามาใหม่จากนั้นทุกอย่างก็ทำงานได้ตามปกติ
Matt Shepherd

3
ประหยัดเวลาด้วยตัวคุณเองและเรียกใช้เครื่องมือนี้: microsoft.com/en-us/download/…
Eduardo

15

ฉันได้รับข้อผิดพลาดเดียวกันเมื่อพยายามผ่านการรับรองความถูกต้องของ windows ฟังดูน่าหัวเราะ แต่ในกรณีที่มันช่วยคนอื่น: เป็นเพราะบัญชีโดเมนของฉันถูกล็อคในขณะที่ฉันยังคงเข้าสู่ระบบ (!) การปลดล็อกบัญชีได้รับการแก้ไขแล้ว


13

ฉันลงชื่อเข้าใช้ Windows 10 ด้วย PIN แทนรหัสผ่าน ฉันออกจากระบบและกลับเข้าสู่ระบบด้วยรหัสผ่านแทนและสามารถเข้าสู่ SQL Server ผ่าน Management Studio ได้


มันไร้สาระ และมันได้ผล ฉันเสียเวลาไปมากมายกับเรื่องนี้ ขอขอบคุณ!
mcb2k3

2
อ๊ะนั่นยังไม่เป็นอย่างนั้น SSMS เปิดสวิตช์ฉันเมื่อฉันไม่ได้มองหาและกลับไปที่บัญชี SQL Server ของฉัน แต่ในที่สุดฉันก็ลองเปลี่ยนจากการใช้บัญชี Microsoft เพื่อเข้าสู่ระบบภายในเครื่องเป็นการใช้บัญชีภายในเครื่อง นั่นเป็นเคล็ดลับและดูเหมือนว่าจะใช้งานได้ในขณะนี้แม้ว่าฉันจะเข้าสู่ระบบด้วย PIN ก็ตาม
mcb2k3

ใช่การใช้รหัสผ่านแทนพินก็ใช้ได้ผลกับฉันเช่นกัน +1 สำหรับ Microsoft
BrunoMartinsPro

พระเจ้าช่วย! ไม่อยากจะเชื่อเลยว่าสิ่งนี้สร้างความแตกต่างได้จริงๆ!
arni

9

ข้อผิดพลาดบริบท SSPI แน่นอนบ่งชี้ว่าการตรวจสอบจะถูกพยายามใช้Kerberos

เนื่องจากการรับรองความถูกต้องของ Kerberos การรับรองความถูกต้องของ Windows ของ SQL Serverอาศัย Active Directoryซึ่งต้องใช้ความสัมพันธ์ระหว่างคอมพิวเตอร์และตัวควบคุมโดเมนเครือข่ายของคุณคุณควรเริ่มต้นด้วยการตรวจสอบความสัมพันธ์นั้น

คุณได้อย่างรวดเร็วสามารถตรวจสอบความสัมพันธ์ที่ผ่าน Powershell คำสั่งต่อไปทดสอบ ComputerSecureChannel

Test-ComputerSecureChannel -verbose

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

หากส่งคืนค่าFalseคุณต้องซ่อมแซมช่องทางความปลอดภัย Active Directory ของคอมพิวเตอร์เนื่องจากไม่มีการตรวจสอบความถูกต้องของโดเมนภายนอกคอมพิวเตอร์ของคุณ

คุณสามารถซ่อมแซม Computer Secure Channel ได้โดยใช้คำสั่งPowershellต่อไปนี้:

Test-ComputerSecureChannel -Repair

ตรวจสอบบันทึกเหตุการณ์ความปลอดภัยหากคุณใช้ kerberos คุณควรเห็นความพยายามเข้าสู่ระบบด้วยแพ็คเกจการพิสูจน์ตัวตน: Kerberos

การตรวจสอบสิทธิ์ NTLM อาจล้มเหลวดังนั้นจึงมีการพยายามตรวจสอบสิทธิ์ kerberos คุณอาจเห็นความล้มเหลวในการพยายามเข้าสู่ระบบ NTLM ในบันทึกเหตุการณ์ความปลอดภัยของคุณหรือไม่

คุณสามารถเปิดการบันทึกเหตุการณ์ kerberos ใน dev เพื่อพยายามดีบักว่าเหตุใด kerberos จึงล้มเหลวแม้ว่าจะเป็นแบบละเอียดมากก็ตาม

ไมโครซอฟท์จัดการการกำหนดค่า Kerberos สำหรับ SQL Serverอาจช่วยให้คุณได้อย่างรวดเร็ววินิจฉัยและแก้ไขปัญหานี้

มีเรื่องราวดีๆให้อ่าน: http://houseofbrick.com/microsoft-made-an-easy-button-for-spn-and-double-hop-issues/


สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้ SPN ถูกลงทะเบียนบนวัตถุผู้ใช้ที่ไม่ถูกต้องใน Active Directory Kerberos Configuration Manager สำหรับ SQL Server แก้ไขได้สองคลิก!
Craig - MSFT

8

เพียงเพื่อเพิ่มโซลูชันที่เป็นไปได้อื่นสำหรับข้อผิดพลาดที่คลุมเครือที่สุดนี้The target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider):

ตรวจสอบว่า IP ที่ได้รับการแก้ไขเมื่อ ping SQL Server นั้นเหมือนกับ IP ใน Configuration Manager ในการตรวจสอบให้เปิดตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL จากนั้นไปที่การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL> โปรโตคอลสำหรับ MSSQLServer> TCP / IP

ตรวจสอบให้แน่ใจว่าเปิดใช้งาน TCP / IP และในแท็บที่อยู่ IP ตรวจสอบให้แน่ใจว่า IP ที่เซิร์ฟเวอร์แก้ไขเมื่อ ping เป็นเหมือนกันที่นี่ ที่แก้ไขข้อผิดพลาดนี้ให้ฉัน


6

ปัญหานี้น่าจะเป็นปัญหาข้อมูลประจำตัวของ windows ฉันได้รับข้อผิดพลาดเดียวกันกับแล็ปท็อปที่ทำงานด้วย VPN ฉันคาดว่าจะเข้าสู่ระบบด้วยโดเมน / ชื่อผู้ใช้ของฉันซึ่งเป็นสิ่งที่ฉันใช้สำเร็จเมื่อเชื่อมต่อโดยตรง แต่ทันทีที่ฉันย้ายไปใช้ VPN ด้วยการเชื่อมต่ออื่นฉันได้รับข้อผิดพลาดนี้ ฉันคิดว่ามันเป็นปัญหา DNS เนื่องจากฉันสามารถ ping เซิร์ฟเวอร์ได้ แต่ปรากฎว่าฉันจำเป็นต้องเรียกใช้ SMSS อย่างชัดเจนในฐานะผู้ใช้ของฉันจากพรอมต์คำสั่ง

เช่น runas / netonly / user: YourDoman \ YourUsername "C: \ Program Files (x86) \ Microsoft SQL Server Management Studio 18 \ Common7 \ IDE \ Ssms.exe"


ฉันมีปัญหาคล้ายกัน (iMac vpn พร้อม Windows VM) ฉันแก้ไขโดยเพิ่มเซิร์ฟเวอร์ DNS ของที่ทำงานไปยังการตั้งค่าเครือข่าย Wi-Fi ของ Mac ฉันเดาว่ามีวิธีที่ดีกว่านี้ แต่มันได้ผลสำหรับฉัน
Erik Pearson

5

เข้าสู่ระบบทั้ง SQL Box และไคลเอนต์ของคุณและพิมพ์:

ipconfig /flushdns
nbtstat -R

หากไม่ได้ผลให้ต่ออายุ DHCP ในเครื่องไคลเอนต์ของคุณ ... สิ่งนี้ใช้ได้กับพีซี 2 เครื่องในสำนักงานของเรา


คำตอบของคุณเกี่ยวกับเครื่องไคลเอนต์ของฉันและกล่อง SQL plus ipconfig/releaseและipconfig/renewบนเครื่องไคลเอนต์ของฉันและมันไม่ได้ผลสำหรับฉัน (
AlbatrossCafe

4

ฉันเพิ่งเจอสิ่งนี้และแก้ไขโดยทำ 2 สิ่ง:

  1. การให้สิทธิ์การอ่าน / เขียน servicePrincipalName ไปยังบัญชีบริการโดยใช้ ADSI Edit ตามที่อธิบายไว้ในhttps://support.microsoft.com/en-us/kb/811889
  2. การลบ SPN ที่มีอยู่ก่อนหน้านี้บนบัญชีคอมพิวเตอร์ SQL Server (ตรงข้ามกับบัญชีบริการ) โดยใช้

    setspn -D MSSQLSvc/HOSTNAME.domain.name.com:1234 HOSTNAME
    

    โดยที่1234เป็นหมายเลขพอร์ตที่อินสแตนซ์ใช้ (ของฉันไม่ใช่อินสแตนซ์เริ่มต้น)


ฉันเปลี่ยนอินสแตนซ์ MS SQL Server จากการทำงานโดยใช้NT Service\MSSQLSSERVERเป็นการรันเป็นบัญชีบริการที่มีการจัดการ หลังจากทำเช่นนั้น SSMS สามารถเชื่อมต่อกับฐานข้อมูลในเครื่องบนเซิร์ฟเวอร์ได้ แต่ไม่สามารถเชื่อมต่อจากแล็ปท็อปของฉันจากระยะไกลได้ การแก้ไข SPN ช่วยแก้ปัญหาได้
Hydrargyrum

4

ในกรณีของฉันการรีสตาร์ท SQL Server 2014 (บนเซิร์ฟเวอร์การพัฒนาของฉัน) แก้ไขปัญหาได้


Ditto SQL Server 2016
youcantryreachingme

4

ฉันกำลังทดสอบ IPv6 บนคลัสเตอร์ของพีซีในเครือข่ายแยกและพบปัญหานี้เมื่อฉันเปลี่ยนกลับเป็น IPv4 ฉันเล่นในไดเรกทอรีที่ใช้งานอยู่ DNS และ DHCP ดังนั้นไม่รู้ว่าฉันผลิตอะไรเพื่อทำลายการตั้งค่า Kerberos

ฉันทดสอบการเชื่อมต่อภายนอกซอฟต์แวร์ของฉันอีกครั้งด้วยเคล็ดลับที่เป็นประโยชน์นี้เพื่อเชื่อมต่อการเชื่อมต่อระยะไกลที่ฉันพบ

https://blogs.msdn.microsoft.com/steverac/2010/12/13/test-remote-sql-connectivity-easily/

แล้วหลังจากที่ค้นหาสั้นที่พบนี้บนเว็บไซต์ของ Microsoft https://support.microsoft.com/en-gb/help/811889/how-to-troubleshoot-the-cannot-generate-sspi-context-error-message

เรียกใช้เครื่องมือบนเซิร์ฟเวอร์ SQL ดูว่ามีปัญหาหรือไม่หากสถานะระบุว่าข้อผิดพลาดจากนั้นกดปุ่มแก้ไขที่ปรากฏขึ้น

สิ่งนี้ช่วยแก้ปัญหาให้ฉันได้


3

ซึ่งมักเกิดจากการขาดหายไปไม่ถูกต้องหรือซ้ำกันชื่อหลักการบริการ (SPN)

ขั้นตอนในการแก้ไข:

  1. ยืนยันว่า SQL Server ใช้บัญชี AD บัญชีใด
  2. เรียกใช้คำสั่งต่อไปนี้ใน Powershell หรือ CMD ในโหมดผู้ดูแลระบบ (บัญชีบริการไม่ควรมีโดเมน)
setspn -L <ServiceAccountName> | Select-String <ServerName> | select line
  1. ตรวจสอบให้แน่ใจว่าเอาต์พุตที่ส่งคืนมี SPN ซึ่งมีคุณสมบัติครบถ้วนไม่มีคุณสมบัติครบถ้วนมีพอร์ตและไม่มีพอร์ต

    ผลผลิตที่คาดหวัง:

    Registered ServicePrincipalNames for CN=<ServiceAccountName>,OU=CSN Service Accounts,DC=<Domain>,DC=com: 
    MSSQLSvc/<ServerName>.<domain>.com:1433
    MSSQLSvc/<ServerName>:1433                                           
    MSSQLSvc/<ServerName>.<domain>.com
    MSSQLSvc/<ServerName>
    
  2. หากคุณไม่เห็นทั้งหมดข้างต้นให้เรียกใช้คำสั่งต่อไปนี้ใน PowerShell หรือ CMD ในโหมดผู้ดูแลระบบ (อย่าลืมเปลี่ยนพอร์ตหากคุณไม่ได้ใช้ค่าเริ่มต้น 1433)

SETSPN -S  MSSQLSvc/<ServerName> <Domain>\<ServiceAccountName> 
SETSPN -S  MSSQLSvc/<ServerName>.<Domain> <Domain>\<ServiceAccountName> 
SETSPN -S  MSSQLSvc/<ServerName>:1433 <Domain>\<ServiceAccountName> 
SETSPN -S  MSSQLSvc/<ServerName>.<Domain>:1433 <Domain>\<ServiceAccountName>
  1. เมื่อเสร็จสิ้นแล้วโดยปกติจะใช้เวลาสองสามนาทีในการเผยแพร่ DNS

นอกจากนี้หากคุณได้รับข้อความเกี่ยวกับ SPN ที่ซ้ำกันคุณอาจต้องการลบออกและสร้างขึ้นใหม่


2

ฉันมีปัญหานี้เมื่อเข้าถึงแอปพลิเคชันบนเว็บ อาจเป็นเพราะฉันเพิ่งเปลี่ยนรหัสผ่าน windows เมื่อเร็ว ๆ นี้

ปัญหานี้ได้รับการแก้ไขเมื่อฉันอัปเดตรหัสผ่านสำหรับพูลแอปที่ฉันโฮสต์เว็บแอปพลิเคชัน


2

ตรวจสอบการจับคู่นาฬิการะหว่างไคลเอนต์และเซิร์ฟเวอร์

เมื่อฉันพบข้อผิดพลาดนี้เป็นระยะ ๆ ไม่มีคำตอบใด ๆ ข้างต้นได้ผลจากนั้นเราพบว่าเวลาได้ลอยไปบนเซิร์ฟเวอร์บางเครื่องของเราเมื่อซิงค์อีกครั้งข้อผิดพลาดก็หายไป ค้นหา w32tm หรือ NTP เพื่อดูวิธีซิงค์เวลาโดยอัตโนมัติบน Windows


1

เนื่องจากฉันมาถึงที่นี่เมื่อต้องการหาวิธีแก้ปัญหาของตัวเองฉันจะแบ่งปันวิธีแก้ปัญหาของฉันที่นี่เผื่อว่าคนอื่น ๆ ก็มาที่นี่เช่นกัน

ฉันเชื่อมต่อกับ SQL Server ได้ดีจนกระทั่งเครื่องของฉันถูกย้ายไปที่สำนักงานอื่นในวันที่ โดเมนอื่น จากนั้นหลังจากสวิตช์ฉันได้รับข้อผิดพลาดนี้เกี่ยวกับชื่อหลักเป้าหมาย สิ่งที่คงที่มันถูกเชื่อมต่อโดยใช้ชื่อที่มีคุณสมบัติครบถ้วนเช่น: server.domain.com และจริงๆแล้วเมื่อฉันเชื่อมต่อกับเซิร์ฟเวอร์แรกด้วยวิธีนั้นฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์อื่นโดยใช้เพียงชื่อเซิร์ฟเวอร์ (โดยไม่มีคุณสมบัติครบถ้วน) แต่ระยะทางของคุณอาจแตกต่างกันไป


ปัญหานี้เกิดขึ้นกับฉันเมื่อฉันเพิ่มใบรับรองในการเชื่อมต่อ SQL เท่านั้น ใบรับรองถูกออกให้กับ FQDN ดังนั้นเมื่อฉันเชื่อมต่อกับ FQDN \ Instance มันก็ใช้งานได้
Slogmeister Extraordinaire

1

วันนี้ฉันพบสิ่งนี้และต้องการแบ่งปันการแก้ไขของฉันเนื่องจากสิ่งนี้ถูกมองข้ามไปและแก้ไขได้ง่าย

เราจัดการ rDNS ของเราเองและเพิ่งเปลี่ยนรูปแบบการตั้งชื่อเซิร์ฟเวอร์ของเรา ในส่วนนี้เราควรอัปเดต rDNS ของเราและลืมทำสิ่งนี้

ping เปิดชื่อโฮสต์ที่ถูกต้อง แต่ ping -a ส่งคืนชื่อโฮสต์ที่ไม่ถูกต้อง

แก้ไขง่าย ๆ : เปลี่ยน rDNS ทำ ipconfig / flushdns รอ 30 วินาที (แค่บางอย่างที่ฉันทำ) ทำ ping -a อีกครั้งดูการแก้ไขชื่อโฮสต์ที่ถูกต้องเชื่อมต่อ ... กำไร


1

ฉันพบสิ่งใหม่สำหรับสิ่งนี้: SQL 2012 โฮสต์บนเซิร์ฟเวอร์ 2012 ได้รับมอบหมายให้สร้างคลัสเตอร์สำหรับ SQL AlwaysOn
สร้างคลัสเตอร์ทุกคนจะได้รับข้อความ SSPI

ในการแก้ไขปัญหาให้รันคำสั่งต่อไปนี้:

setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService

DomainNamerunningSQLService== บัญชีโดเมนที่ฉันตั้งค่าสำหรับ SQL ฉันต้องการผู้ดูแลระบบโดเมนเพื่อเรียกใช้คำสั่ง มีเพียงเซิร์ฟเวอร์เดียวในคลัสเตอร์ที่มีปัญหา

จากนั้นรีสตาร์ท SQL ฉันประหลาดใจที่ฉันสามารถเชื่อมต่อได้


ฉันมีปัญหาเดียวกันนี้ แต่ไม่ได้อยู่ในคลัสเตอร์ ฉันได้เปลี่ยนการเข้าสู่ระบบสำหรับบริการ SQL Engine เป็นบัญชีโดเมน ฉันต้องลบMSSQLSvc/SERVER_FQNName:*SPN ออกจากบัญชีคอมพิวเตอร์แล้วเพิ่มลงในบัญชีผู้ใช้ที่ใช้บริการ
Slogmeister Extraordinaire

1

ฉันพยายามเชื่อมต่อกับ VM ที่เรียกใช้ SQL Server 2015 จากแล็ปท็อปของฉันในแอปคอนโซล Visual Studio 2015 ฉันเปิดใช้แอปเมื่อคืนก่อนและไม่เป็นไร ในตอนเช้าฉันพยายามดีบักแอปและได้รับข้อผิดพลาดนี้ ฉันพยายามipconfig/flushและrelease+renewและขยะอื่น ๆ อีกมากมาย แต่ในที่สุด ...

รีสตาร์ท VM ของคุณและรีสตาร์ทไคลเอนต์ ที่แก้ไขให้ฉัน ฉันควรจะรู้ว่ารีสตาร์ททุกครั้ง


ประสบการณ์ที่คล้ายกัน SQLServer 2016 บน VM ไม่แน่ใจว่าทำไมการเชื่อมต่อถึงล้มเหลว การรีสตาร์ท VM แก้ไขได้โดยไม่จำเป็นต้องรีสตาร์ทไคลเอนต์
youcantryreachingme

1

ฉันมีปัญหานี้บนเซิร์ฟเวอร์ sql ของฉัน ฉัน setspn -D mssqlsvc \ Hostname.domainname ชื่อโฮสต์หยุดและเริ่มบริการเซิร์ฟเวอร์ SQL ของฉัน

ฉันคิดว่าแค่หยุดและเริ่มบริการ sql ของฉันก็น่าจะทำได้


นี่คือสิ่งที่ฉันทำหลังจากเปรียบเทียบsetspn -L <Hostname>กับเซิร์ฟเวอร์ที่ใช้งานได้ ปรากฎว่าอินสแตนซ์ทั้งหมดที่ใช้งานได้ไม่มีการลงทะเบียน SPN ฉันไม่รู้จริงๆว่าฉันกำลังทำอะไรอยู่ แต่ดูเหมือนว่าหากไม่มีการลงทะเบียน SPN เหล่านั้นก็สามารถใช้ NTLM ได้ ขอบคุณ!
BenderBoy

โปรดทราบว่านี้ไม่ได้จริงๆวิธีการแก้ปัญหาถ้าคุณต้องการที่จะใช้ Kerberos แทน NTLM ตามที่คุณเห็นได้ชัดว่าควร: serverfault.com/a/384721 ในความเป็นจริงวิธีนี้จะปิด Kerberos auth โดยทั่วไป
BenderBoy

1

ฉันมีปัญหาเดียวกัน แต่การล็อกและการปลดล็อกเครื่องใช้ได้ผลสำหรับฉัน บางครั้งปัญหาไฟร์วอลล์อาจทำให้เกิดข้อผิดพลาด

ฉันไม่แน่ใจว่าจะได้ผลสำหรับคุณหรือไม่เพียงแค่แบ่งปันประสบการณ์ของฉัน


1

ฉันได้ลองวิธีแก้ปัญหาทั้งหมดที่นี่แล้วและยังไม่มีวิธีใดได้ผล วิธีแก้ปัญหาที่ใช้งานได้คือคลิกConnectป้อนชื่อเซิร์ฟเวอร์เลือกตัวเลือกแท็บคุณสมบัติการเชื่อมต่อ ตั้งค่า "Network protocol" เป็น "Named Pipes" สิ่งนี้ช่วยให้ผู้ใช้สามารถเชื่อมต่อระยะไกลโดยใช้ข้อมูลรับรองเครือข่ายของตน ฉันจะโพสต์การอัปเดตเมื่อได้รับการแก้ไข


ฉันตั้งค่าของฉันเป็น "TCP / IP" จริงๆ ฉันไม่รู้ว่าการเปลี่ยนแปลงมันช่วยแก้ปัญหาหรือการตั้งค่าเฉพาะสำหรับสถานการณ์เครือข่ายของฉัน ...
Zarepheth

1

ในกรณีของฉันปัญหาคือการตั้งค่า DNS บน wifi ฉันลบการตั้งค่าและปล่อยให้ว่างเปล่าและใช้งานได้

Como ficou minha configuraçãoทำ DNS


1

ตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน "Named Pipes" จาก "SQL Server Configuration Manager" สิ่งนี้ได้ผลสำหรับฉัน

  1. เปิด "SQL Server Configuration Manager"
  2. ขยาย "SQL Server Network Configuration" จากรายการทางด้านซ้าย
  3. เลือก "Protocols for [Your Instance Name]"
  4. คลิกขวาที่ "Named Pipes" จากรายการทางด้านขวา
  5. เลือก "เปิดใช้งาน"
  6. เริ่มบริการอินสแตนซ์ของคุณใหม่

1
ฉันมีข้อความเดียวกัน ฉันพยายามเชื่อมต่อกับ IP ดังนั้นฉันจึงทำในรูปแบบstackoverflow.com/users/8568873/s3minakiนั่นคือขั้นตอนที่ 1-6 แต่ฉันเปิดใช้งาน TCP / IP แทน Named Pipes นอกจากนี้ภายใต้ IPALL ฉันล้างพอร์ต TCP Dynamic และตั้งค่าพอร์ต TCP แทน ตรวจสอบให้แน่ใจว่าไม่มีอินสแตนซ์อื่นรันพอร์ตนี้มิฉะนั้นอินสแตนซ์จะไม่รีสตาร์ท ฉันยังต้องการผู้ใช้ SQL การรับรองความถูกต้องของ Windows จะไม่ทำงาน ในตัวจัดการ SQL คุณเชื่อมต่อกับ xxxx \ instancename, portnr เช่น 127.0.0.1 \ SQLEXPRESS, 1433
Tomas Hesse

1

Microsoft Tool นี้เหมือน Magic เรียกใช้เชื่อมต่อกับเซิร์ฟเวอร์ SQL แล้วคลิกแก้ไข

เวอร์ชันเก่าที่เชื่อมโยงที่นี่ทำงานบนเซิร์ฟเวอร์ SQL 2017

Kerberos Configuration Manager สำหรับ SQL Server https://www.microsoft.com/en-us/download/details.aspx?id=39046


1

ในสถานการณ์ของฉันฉันพยายามใช้ Integrated Security เพื่อเชื่อมต่อจากพีซีไปยัง SQL Server บนพีซีเครื่องอื่นบนเครือข่ายที่ไม่มีโดเมน บนเครื่องพีซีทั้งผมได้ลงชื่อเข้าใช้ Windows ด้วยบัญชี ฉันเปลี่ยนไปใช้บัญชีท้องถิ่นบนพีซีทั้งสองเครื่องและตอนนี้ SQL Server เชื่อมต่อสำเร็จแล้ว


1

ในกรณีของฉันเนื่องจากฉันทำงานในสภาพแวดล้อมการพัฒนาของฉันมีคนปิด Domain Controller และ Windows Credentials ไม่สามารถพิสูจน์ตัวตนได้ หลังจากเปิดตัวควบคุมโดเมนข้อผิดพลาดจะหายไปและทุกอย่างทำงานได้ดี


1

ช่องอื่นสำหรับปัญหานี้ที่เกิดจากการเชื่อมต่อเครือข่าย ฉันเชื่อมต่อผ่านไคลเอนต์ windows VPN และปัญหานี้ปรากฏขึ้นเมื่อฉันเปลี่ยนจาก Wifi เป็นการเชื่อมต่อแบบมีสาย การแก้ไขสถานการณ์ของฉันคือการปรับเมตริกอะแดปเตอร์ด้วยตนเอง

ใน powershell ใช้ Get-NetIPInterface เพื่อดูค่าเมตริกทั้งหมด ตัวเลขที่ต่ำกว่าเป็นต้นทุนที่ต่ำกว่าและเป็นที่ต้องการของ windows ฉันเปลี่ยนอีเธอร์เน็ตและ VPN และข้อมูลรับรองได้ในที่ที่พวกเขาต้องการเพื่อให้ SSMS มีความสุข

ในการกำหนดค่าคุณลักษณะ Automatic Metric: ในแผงควบคุมคลิกสองครั้งที่ Network Connections คลิกขวาที่อินเทอร์เฟซเครือข่ายจากนั้นเลือกคุณสมบัติ คลิก Internet Protocol (TCP / IP) จากนั้นเลือก Properties บนแท็บทั่วไปเลือกขั้นสูง ในการระบุเมตริกบนแท็บการตั้งค่า IP เลือกล้างกล่องกาเครื่องหมายเมตริกอัตโนมัติจากนั้นป้อนเมตริกที่คุณต้องการในฟิลด์เมตริกอินเทอร์เฟซ

ที่มา: https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/automatic-metric-for-ipv4-routes


0

ฉันพบตัวแปรของปัญหานี้นี่คือลักษณะ:

  • ผู้ใช้สามารถเชื่อมต่อกับอินสแตนซ์ที่มีชื่อได้สำเร็จตัวอย่างเช่นการเชื่อมต่อกับServer\Instanceได้สำเร็จสำเร็จ
  • ผู้ใช้ไม่สามารถเชื่อมต่อกับอินสแตนซ์เริ่มต้นตัวอย่างเช่นการเชื่อมต่อกับServerกับภาพหน้าจอของ OP เกี่ยวกับ SSPI ไม่สำเร็จ
  • ผู้ใช้ไม่สามารถเชื่อมต่ออินสแตนซ์เริ่มต้นด้วยชื่อแบบเต็มเช่นการเชื่อมต่อกับ Server.domain.comล้มเหลว (หมดเวลา)
  • ผู้ใช้ไม่สามารถเชื่อมต่อที่อยู่ IP โดยไม่มีชื่ออินสแตนซ์ตัวอย่างเช่นการเชื่อมต่อกับ 192.168.1.134ล้มเหลว
  • ผู้ใช้รายอื่นที่ไม่ได้อยู่ในโดเมน (เช่นผู้ใช้ที่ใช้ VPN กับเครือข่าย) แต่ใช้ข้อมูลรับรองโดเมนสามารถเชื่อมต่อกับอินสแตนซ์เริ่มต้นและที่อยู่ IP ได้สำเร็จ

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

  1. ดูเซิร์ฟเวอร์ในรายการ SPN โดยใช้
    setspn -l Server
    ไฟล์. ในกรณีของเรามันกล่าวว่าServer.domain.com
  2. เพิ่มรายการไปยังไฟล์โฮสต์ที่อยู่ในC:\Windows\System32\drivers\etc\hosts(เรียกใช้ Notepad ในฐานะผู้ดูแลระบบเพื่อแก้ไขไฟล์นี้) รายการที่เราเพิ่มคือ
    Server.domain.com Server

หลังจากนี้เราสามารถเชื่อมต่อผ่าน SSMS กับอินสแตนซ์เริ่มต้นได้สำเร็จ


0

ฉันมีปัญหานี้เช่นกันใน SQL Server 2014 ขณะเข้าสู่ระบบด้วยการรับรองความถูกต้องของ windows เพื่อแก้ไขปัญหาฉันได้รีสตาร์ทเซิร์ฟเวอร์ของฉันหนึ่งครั้งจากนั้นลองเข้าสู่ระบบมันใช้ได้กับฉัน

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