ไม่สามารถเชื่อมต่อกับ SQL Server โดยใช้บัญชี 'sa' สิ่งที่ฉันขาดหายไปคืออะไร


20

ฉันกำลังพยายามเข้าสู่ระบบอินสแตนซ์ของ SQL Server 2005 Express โดยใช้คำสั่งต่อไปนี้:

osql -S .\INSTANCE -U sa -P password

ฉันได้รับข้อผิดพลาด: การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'sa'

ฉันสามารถเชื่อมต่อได้ดีโดยใช้สวิตช์ -E ฉันต้องเพิ่มว่ามันใช้งานได้นานหลายเดือน ฉันคิดว่าบางคนเปลี่ยนบางอย่าง แต่ฉันไม่สามารถเข้าใจได้ว่ามันคืออะไร

นี่คือสิ่งที่ฉันพยายาม:

  • เข้าสู่ระบบโดยใช้การตรวจสอบ Windows และเปลี่ยนรหัสผ่าน sa:

    sp_password NULL, newpassword, 'sa'

  • การเปิดใช้งานการลงชื่อเข้าใช้ 'sa':

    เข้าสู่ระบบแก้ไขได้เปิดใช้งาน; ไปเปลี่ยนการเข้าสู่ระบบด้วย PASSWORD = 'newpassword'; ไป

  • ตรวจสอบ Windows Registry เพื่อให้แน่ใจว่าเปิดใช้งานการรับรองความถูกต้องแบบผสม ค่าถูกต้อง: LoginMode = 2

ฉันควรตรวจสอบอะไรอีก ขอบคุณล่วงหน้า.

ข้อมูลเพิ่มเติม:

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

ฉันกำลังเชื่อมต่อโดยใช้ VNC ดังนั้นฉันจึงไม่สามารถใช้ SSMS ได้

แอปพลิเคชันของฉันสามารถเชื่อมต่อโดยใช้การเข้าสู่ระบบ SQL Server อื่น แต่ไม่ 'sa'

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

คำตอบ:


23

เช่น @SpaceManSpiff กล่าวว่าอย่าลืมตรวจสอบว่าเปิดใช้งานโหมดผสมหรือไม่ มีคนเปลี่ยนการตั้งค่าสำหรับฉันและฉันมีปัญหาเดียวกัน นี่คือวิธีการแก้ปัญหา:

  1. เข้าสู่ระบบไปยัง Studio จัดการเซิร์ฟเวอร์ MSSQL ด้วย Windows Authentication
  2. ใน SQL Server Management Studio Object Explorer คลิกขวาที่เซิร์ฟเวอร์แล้วคลิกคุณสมบัติ
  3. ภายใต้คุณสมบัติเซิร์ฟเวอร์ให้เลือกหน้า "ความปลอดภัย"
  4. เลือกการรับรองความถูกต้องของเซิร์ฟเวอร์เป็น "SQL Server และ Windows Authentication Mode" แล้วคลิกตกลง คุณสมบัติฐานข้อมูลการจัดการเซิร์ฟเวอร์ MSSQL
  5. เริ่มบริการ SQL ใหม่แล้วลองลงชื่อเข้าใช้ด้วยรายละเอียด 'sa'

ที่มา: http://forums.eukhost.com/f15/login-failed-user-sa-microsoft-sql-server-error-18456-a-12544/


12

ตกลงฉันสามารถที่จะคิดออกว่าเกิดอะไรขึ้น (ประเภท) และได้รับการแก้ปัญหา

ดูเหมือนว่าหนึ่งสัปดาห์ที่ผ่านมาพวกเขากำลังเล่นกับนโยบายความปลอดภัยของ Windows พวกเขากำลังเพิ่ม / ลบสิทธิ์ แต่ไม่สามารถให้สิ่งที่พวกเขาทำกับฉันเพราะพวกเขาไม่รู้จริง ๆ (อุ๊ย!)

อย่างไรก็ตามฉันเชื่อมต่อโดยใช้การรับรองความถูกต้อง Windows (-E สวิตช์) และเรียกใช้แบบสอบถามต่อไปนี้:

ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF
GO
ALTER LOGIN [sa] ENABLE
GO

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

ขอบคุณสำหรับคำแนะนำทั้งหมดของคุณ


6

สิ่งที่ต้องตรวจสอบ

รหัสผ่านบนบัญชี SA

เปิดใช้งานโหมดผสม

บัญชี SA ปิดใช้งานหรือไม่

สร้างบัญชี SQL อื่นและลองใช้งาน (เนื่องจากคุณสามารถใช้ -E ได้คุณจะสามารถทำสิ่งนี้ได้)

ทดสอบโดยใช้การเชื่อมต่อ ODBC คุณสามารถสร้างการเชื่อมต่อนี้เพื่อดูว่า SA ใช้งานได้หรือไม่

โอ้และมักจะจับทุกอย่างใน windows รีบูต (อย่างจริงจังซึ่งจะช่วยทดสอบเซิร์ฟเวอร์ SQL ของฉันหลังจากที่ฉันทำสิ่งต่าง ๆ ไปแล้ว)


1

ฉันมีปัญหานั้นเมื่อหลายปีก่อนหลังจากติดตั้ง Windows ServicePack (ไม่มี SQLServer Update แต่ Windows) SQLServer ปฏิเสธการเชื่อมต่อจนกว่า SQLServer ServicePack จะถูกติดตั้งด้วย! ฉันพบข้อความในบันทึกเหตุการณ์หลังจากผ่านไปหลายชั่วโมง

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


สิ่งนี้ดูมีแนวโน้มฉันจะลองในวันจันทร์และรายงานกลับ ขอบคุณสำหรับคำแนะนำ
JAG

ในที่สุดฉันไม่ได้พยายามติดตั้ง Service Pack ล่าสุด ดู 'คำตอบที่ยอมรับ' ของฉันเอง
JAG

0

สมมติว่าคุณติดตั้ง Management Studio หรือ Management Studio Express คุณสามารถเชื่อมต่อ Management Studio กับอินสแตนซ์โดยใช้ sa ได้หรือไม่

จูเนียร์


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

หากคุณมี Management Studio บนพีซีเครื่องอื่นแม้ว่าจะอยู่ไกลสุดของ VPN คุณก็ยังคงสามารถเชื่อมต่อได้ จุดคือการตรวจสอบว่ามีบางอย่างผิดปกติกับการตั้งค่าเซิร์ฟเวอร์หรือว่าปัญหาอยู่กับคำสั่ง osql
John Rennie

0

คุณแน่ใจหรือไม่ว่าคุณได้เริ่มบริการ SQL Server ใหม่หลังจากที่คุณทำการเปลี่ยนแปลงรีจิสทรี


ไม่จำเป็นต้องเปลี่ยนเพราะมีค่าที่ถูกต้อง
JAG

0

มีใครบางคนลบฐานข้อมูลซึ่งเป็นฐานข้อมูลเริ่มต้นสำหรับ "sa" หรือไม่

หากเป็นปัญหาลอง

EXEC sp_defaultdb 'sa', 'New default database'

ในทางทฤษฎีมีฐานข้อมูลเดียวเท่านั้นและมีอยู่ ฉันไม่ได้ใช้คำสั่งนั้น
JAG

โดยปกติแล้วมันคือ 'ต้นแบบ' แต่ผมคิดว่าไม่ใช่ปัญหา ...
splattne

ฉันแค่ลองมัน แต่ก็ไม่ได้สร้างความแตกต่าง ขอบคุณอยู่ดี
JAG

0

หากคุณกำลังติดตั้ง SQL Express 2014 คุณจะต้องทำสองสามอย่างเพื่อแก้ไขข้อผิดพลาดนี้หากคุณลองลงชื่อเข้าใช้ด้วยบัญชี [sa]

  1. บัญชี "sa" จะปิดการใช้งาน ดังนั้นคุณจะต้องสลับบัญชีจากปิดการใช้งานเป็นเปิดใช้งานภายใต้ส่วนสถานะของบัญชี

  2. เซิร์ฟเวอร์ต้องเปิดใช้งานการตรวจสอบความถูกต้องของ windows และ sql server โดยค่าเริ่มต้นการตรวจสอบ windows เท่านั้นที่เปิดใช้งาน

  3. รีเซ็ตรหัสผ่าน (ดูรหัสด้านล่าง; ServerFault มีข้อผิดพลาดที่รหัสไม่แสดงเหมือนกันเมื่อใช้รายการที่สั่งซื้อตั้งแต่วันที่ 6/8/2016)

  4. เริ่มบริการ Windows สำหรับ SQL Server

=========

ALTER LOGIN sa WITH PASSWORD='password', CHECK_POLICY=OFF;
ALTER LOGIN [sa] ENABLE;

0

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

ล็อกอินเข้าสู่ฐานข้อมูลด้วย Windows Authentication

เรียกใช้แบบสอบถาม:

ALTER LOGIN [sa] WITH PASSWORD='newpassword', CHECK_POLICY=OFF 
GO
ALTER LOGIN [sa] ENABLE
GO

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

หมายเหตุ: สิ่งที่ฉันสังเกตเห็นว่าเมื่อ CHECK_POLICY อยู่ในโซลูชัน GUI SSME สำหรับการเปลี่ยนรหัสผ่านจะไม่ทำงานทุกครั้ง ฉันไม่ใช่เหตุผลที่อยู่เบื้องหลัง แต่ฉันได้สังเกต


0

ฉันแก้ไขมันดังต่อไปนี้เข้าสู่ระบบด้วยคุณสมบัติการรับรองความถูกต้อง windows ของคุณไปที่เซิร์ฟเวอร์ >> ความปลอดภัยและเปลี่ยนเซิร์ฟเวอร์ของแท้


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