ไม่สามารถเชื่อมต่อกับ localhost บน SQL Server Express 2012/2016


99

ฉันเพิ่งดาวน์โหลด SQL Express 2012 เวอร์ชันล่าสุด แต่ไม่สามารถเชื่อมต่อกับ localhost ได้ ฉันลองใช้ localhost \ SQLExpress และการพิสูจน์ตัวตนของ Windows แต่มีข้อความแสดงข้อผิดพลาดแจ้งว่าไม่สามารถเชื่อมต่อได้ ฉันขาดอะไรที่นี่? ฉันเคยใช้ SQL Server 2008 มาก่อนและไม่เคยมีปัญหาในการเชื่อมต่อกับ localhost ดูเหมือนว่าจะหาไม่เจอด้วยซ้ำ นอกจากนี้ในบริการฉันเห็นเฉพาะ SQL Server VSS Writer เป็นแบบที่ควรจะเป็นหรือเปล่า? หรือฉันขาดอะไรไป? ขอบคุณ


1
ดูเหมือนว่าการติดตั้งจะไม่เป็นไปด้วยดี คุณลองซ่อม / ติดตั้งใหม่หรือไม่?
Vikdor

1
คุณแน่ใจหรือไม่ว่าคุณพบตัวติดตั้งสำหรับเซิร์ฟเวอร์ซึ่งตรงกันข้ามกับตัวติดตั้ง Management Studio
Damien_The_Unbeliever

คำตอบ:


188

ตามที่ Aaron Bertand :

  1. คุณต้องตรวจสอบว่าบริการ SQL Server กำลังทำงานอยู่ คุณสามารถทำได้โดยไปที่Start > Control Panel > Administrative Tools > Servicesและตรวจสอบว่าบริการ SQL Server ( SQLEXPRESS) กำลังทำงานอยู่ ถ้าไม่เริ่มต้น

  2. ในขณะที่คุณอยู่ในแอพเพล็ตบริการโปรดตรวจสอบให้แน่ใจว่าบริการSQL Browserเริ่มทำงานแล้ว ถ้าไม่เริ่มต้น

  3. คุณต้องตรวจสอบให้แน่ใจว่า SQL Server ได้รับอนุญาตให้ใช้ TCP / IP หรือไปป์ที่มีชื่อ คุณสามารถเปิดเหล่านี้บนโดยการเปิดจัดการการกำหนดค่าใน SQL Server Start > Programs > Microsoft SQL Server 2012 > Configuration Tools(หรือSQL Server Configuration Manager) และให้แน่ใจว่า TCP / IP และไปป์จะเปิดใช้งาน หากคุณไม่พบตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL ในเมนูเริ่มคุณสามารถเปิดสแน็ปอิน MMC ด้วยตนเอง ตรวจสอบตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQLสำหรับเส้นทางไปยังสแน็ปอินตามเวอร์ชันของคุณ

    ตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL

  4. ตรวจสอบว่าโหมดการตรวจสอบการเชื่อมต่อ SQL Server ตรงกับสตริงการเชื่อมต่อของคุณ:

    • หากคุณกำลังเชื่อมต่อโดยใช้ชื่อผู้ใช้และรหัสผ่านคุณต้องกำหนดค่า SQL Server ให้ยอมรับ "SQL Server Authentication Mode":

      -- YOU MUST RESTART YOUR SQL SERVER AFTER RUNNING THIS!
      USE [master]
      GO
      DECLARE @SqlServerAndWindowsAuthenticationMode INT = 2;
      EXEC xp_instance_regwrite
        N'HKEY_LOCAL_MACHINE',
        N'Software\Microsoft\MSSQLServer\MSSQLServer',
        N'LoginMode',
        REG_DWORD,
        @SqlServerAndWindowsAuthenticationMode;
      GO
      
    • หากคุณกำลังเชื่อมต่อโดยใช้ "Integrated Security = true" (โหมด Windows) และข้อผิดพลาดนี้จะเกิดขึ้นเมื่อทำการดีบักในเว็บแอปพลิเคชันเท่านั้นคุณต้องเพิ่ม ApplicationPoolIdentity เป็นการเข้าสู่ระบบ SQL Server :
  5. มิฉะนั้นให้เรียกใช้Start -> Run -> Services.mscถ้าเป็นเช่นนั้นมันกำลังทำงานอยู่หรือไม่

ถ้ายังไม่ทำงาน

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


2
@dido: Start-> Run-> Services.msc
Ravindra Bagale

3
สิ่งที่ต้องตรวจสอบอีกอย่างคือชื่ออินสแตนซ์ ขึ้นอยู่กับวิธีการติดตั้ง SQL Server คุณอาจหรือไม่จำเป็นต้องระบุชื่ออินสแตนซ์หลังโฮสต์
Arvo Bowen

"TCP / IP และ Named Pipes ถูกเปิดใช้งาน" ดูเหมือนจะจำเป็นหลังจากติดตั้งครั้งแรก
James A Mohler

4
มันโง่ แต่สำหรับฉันปัญหาคือการใช้ "localhost" เป็นชื่อเซิร์ฟเวอร์ไม่ใช่ "localhost \ SQLEXPRESS01" ตามที่ตั้งไว้ในการติดตั้ง
Guy s

1
ในกรณีของฉัน SQLBrowser ถูกปิดใช้งานและเครื่องมือกำหนดค่าไม่ได้อยู่ในโฟลเดอร์ sql tools ในการเริ่มต้นเครื่องมือกำหนดค่าผ่าน cmd https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager?view=sql-server-2017เพื่อเริ่ม SQLBrowser โดยอัตโนมัติหากการกำหนดค่า เครื่องมือล้มเหลว/programming/21375014/i-cannot-start-sql-server-browser
steven87vt

127

ไปที่ Start -> Programs -> Microsoft SQL ServerYYYY -> Configuration Tools -> SQL Server YYYY Configuration Manager หรือเรียกใช้ "SQLServerManager12.msc"

ตรวจสอบให้แน่ใจว่าเปิดใช้งาน TCP / IP ภายใต้โปรโตคอลไคลเอ็นต์

จากนั้นเข้าไปที่ "SQL Server Network Configuration" แล้วดับเบิลคลิก TCP / IP คลิกแท็บ "ที่อยู่ IP" และเลื่อนลงไปด้านล่าง ภายใต้ "IP All" ให้ลบ TCP Dynamic Ports หากมีอยู่และตั้งค่า TCP Port เป็น 1433 คลิกตกลงจากนั้นกลับไปที่ "SQL Server Services" และรีสตาร์ทอินสแตนซ์ SQL Server ตอนนี้คุณสามารถเชื่อมต่อผ่าน localhost ได้อย่างน้อยฉันก็ทำได้

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

โปรดทราบว่าข้อผิดพลาดนี้อาจเกิดขึ้นได้เมื่อเชื่อมต่อจากแอปพลิเคชันอื่นเช่นกัน ตัวอย่างสำหรับWeb.configสตริงการเชื่อมต่อแอปพลิเคชันเว็บ C # ปกติ:

<connectionStrings>
    <add name="DefaultConnection" connectionString="server=localhost;database=myDb;uid=myUser;password=myPass;" />
</connectionStrings>

4
ในที่สุดสิ่งนี้ก็ได้ผลสำหรับฉัน! ฉันเปลี่ยนพอร์ตใน IP1, IP2, ... แต่ไม่ใช่ใน IPAll ที่ทำได้ขอบคุณ!
จอร์จ

2
@ จอร์จตรงกับคุณ. ฉันปิดการใช้งานไฟร์วอลล์และไม่มีอะไรทำงาน มีพอร์ต40xxxพอร์ตใน TCP Dynamic Ports ฉันลบมันออกและใส่ 1433 ในพอร์ต TCP สำหรับ IPAll สิ่งนี้ก็ทำได้เช่นกัน ขอบคุณ!
Alisson

นี่เป็นกุญแจสำคัญสำหรับฉันเช่นกัน
Erik Olson

1
หลังจากหลายชั่วโมงกับการกระแทกหัวของฉันกับกำแพงในที่สุดก็ได้ผล ขอบคุณ.
Top Cat

ทางออกที่ดี ช่วยประหยัดวันของฉัน ขอบคุณมาก!
Lavande

14

ใน SQL SERVER EXPRESS 2012 คุณควรใช้ "(localdb) \ MSSQLLocalDB" เป็นชื่อแหล่งข้อมูลเช่นคุณสามารถใช้สตริงการเชื่อมต่อเช่นนี้

Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;

เยี่ยมมาก! การใช้ (localdb) \ MSSQLLocalDB ทำงานเพื่อเชื่อมต่อกับ SSMS เมื่อ localhost ไม่ทำงาน
Ben

10

ฉันมีปัญหาคล้ายกัน - บางทีวิธีแก้ปัญหาของฉันอาจช่วยได้ ฉันเพิ่งติดตั้ง MSSQL EX 2012 (การติดตั้งเริ่มต้น) และพยายามเชื่อมต่อกับ VS2012 EX ไม่มีความสุข จากนั้นฉันก็ดูบริการยืนยันว่า SQL Server (SQLEXPRESS) กำลังทำงานอยู่

อย่างไรก็ตามฉันเห็นบริการที่น่าสนใจอื่นที่เรียกว่า SQL Server Browser ซึ่งถูกปิดใช้งาน ฉันเปิดใช้งานยิงมันและจากนั้นก็สามารถดึงชื่อเซิร์ฟเวอร์ในการเชื่อมต่อใหม่ใน VS2012 EX และเชื่อมต่อ

แปลกที่พวกเขาจะปิดการใช้งานบริการที่จำเป็นสำหรับ VS ในการเชื่อมต่อ


ไม่จำเป็นต้องเชื่อมต่อ ฉันปิดการใช้งานและเชื่อมต่อได้ดี มันทำให้สิ่งต่างๆง่ายขึ้นเมื่อคุณไม่ทราบชื่อโฮสต์ / อินสแตนซ์ที่แน่นอนที่จะเชื่อมต่อเนื่องจากซอฟต์แวร์อื่น ๆ สามารถสืบค้นสิ่งเหล่านั้นได้
Simon Morgan

8

ความพยายามครั้งแรกวิธีการแก้ปัญหาที่นิยมมากที่สุดให้โดยราวินทรา Bagale

หากการเชื่อมต่อของคุณจาก localhost ไปยังฐานข้อมูลยังคงล้มเหลวโดยมีข้อผิดพลาดคล้ายกับต่อไปนี้:

ไม่สามารถเชื่อมต่อกับ SQL Server DB ข้อผิดพลาด: การเชื่อมต่อ TCP / IP ไปยังโฮสต์ [ที่อยู่ IP] พอร์ต 1433 ล้มเหลว ข้อผิดพลาด: "ปฏิเสธการเชื่อมต่อ: เชื่อมต่อตรวจสอบคุณสมบัติการเชื่อมต่อตรวจสอบให้แน่ใจว่าอินสแตนซ์ของ SQL Server กำลังทำงานบนโฮสต์และยอมรับการเชื่อมต่อ TCP / IP ที่พอร์ตตรวจสอบให้แน่ใจว่าการเชื่อมต่อ TCP ไปยังพอร์ตไม่ได้ถูกบล็อกโดยไฟร์วอลล์ .”

  1. เปิดตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL
  2. ขยายการกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL สำหรับอินสแตนซ์เซิร์ฟเวอร์ที่เป็นปัญหา
  3. ดับเบิลคลิก "TCP / IP"
  4. ในส่วน "Protocol" ให้ตั้งค่า "Enabled" เป็น "Yes"
  5. ในส่วน "ที่อยู่ IP" ให้ตั้งค่าพอร์ต TCP ภายใต้ "IP All" (ซึ่งเป็นค่าเริ่มต้น 1433)
  6. ในส่วน "ที่อยู่ IP" ค้นหาส่วนย่อยที่มีที่อยู่ IP 127.0.0.1 (สำหรับ IPv4) และ :: 1 (สำหรับ IPv6) และตั้งค่าทั้ง "เปิดใช้งาน" และ "ใช้งานอยู่" เป็น "ใช่" และพอร์ต TCP เป็น 1433

    คุณสมบัติ TCP / IP

  7. ไปที่Start > Control Panel > Administrative Tools > Servicesและเริ่มบริการ SQL Server ใหม่ ( SQLEXPRESS)


ฉันลองวิธีแก้ปัญหาอื่น ๆ ข้างต้นก่อนที่จะมาที่นี่ อันนี้แก้ไขให้ฉัน! นอกจากนี้ฉันพบว่าการดาวน์โหลดสิ่งที่เรียกว่า psping ช่วยฉันทดสอบการเชื่อมต่อ ตัวอย่าง: psping 127.0.0.1:1433
JMI MADISON

7

ขั้นแรกให้ตรวจสอบว่าบริการเซิร์ฟเวอร์ SQL กำลังทำงานหรือหยุดทำงานหากหยุดทำงานเพียงแค่เริ่มต้นให้ดำเนินการดังกล่าว .. เพียงทำตามขั้นตอนด้านล่าง

1. เริ่ม -> เรียกใช้ -> Services.msc

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

  1. ไปที่แท็บ Standard ในแผงบริการจากนั้นค้นหา SQl Server (SQL2014)

"SQL2014" มอบให้โดยฉันอาจเป็นชื่ออื่นในกรณีของคุณ

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

เมื่อคุณเริ่มบริการ SQL แล้วคุณจะสามารถเชื่อมต่อฐานข้อมูลภายในเครื่องได้

หวังว่ามันจะช่วยใครสักคน


4

บริการทั้งหมดของฉันทำงานตามที่คาดไว้และฉันยังไม่สามารถเชื่อมต่อได้

ฉันต้องอัปเดตส่วนคุณสมบัติ TCP / IP ในตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQLสำหรับโปรโตคอล SQL Server Express ของฉันและตั้งค่าพอร์ตIPALLเป็น 1433 เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ตามที่คาดไว้

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



1

นี่เป็นเรื่องแปลกฉันมีปัญหาคล้ายกัน ฉันดาวน์โหลดแพคเกจสำหรับ SQL 2012 Express ด้วย Tools แต่ไม่ได้ติดตั้ง Database Engine

ฉันไม่ได้โหลดอีกอันหนึ่งจากไซต์ MS และอันนี้ติดตั้งเอ็นจิ้นฐานข้อมูล หลังจากรีบูตบริการจะแสดงรายการและพร้อมใช้งาน


1

สถานการณ์ของฉัน

  • ชื่ออินสแตนซ์ว่างใน SQL Server Management Studio> เลือกโปรแกรมฐานข้อมูลของคุณ> ปุ่มเมาส์ขวา> คุณสมบัติ (คุณสมบัติเซิร์ฟเวอร์)> คุณสมบัติการเชื่อมต่อมุมมองลิงก์> ผลิตภัณฑ์> ชื่ออินสแตนซ์ว่างเปล่า

  • แหล่งข้อมูล =. \ SQLEXPRESS ไม่ทำงาน => ใช้ localhost ใน web.config (ดูด้านล่าง)

วิธีแก้ไข : ใน web.config

xxxxxx = ชื่อฐานข้อมูลของฉันที่ไม่มี. mdf yyyyyy = ชื่อฐานข้อมูลของฉันในตัวสำรวจฐานข้อมูล VS2012

คุณสามารถบังคับให้ใช้ TCP แทนหน่วยความจำแบบแบ่งใช้โดยใส่คำนำหน้า tcp: กับชื่อเซิร์ฟเวอร์ในสตริงการเชื่อมต่อหรือโดยใช้ localhost

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.110%29.aspx


1

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


1

.\ปัญหาสำหรับผมคือการที่ฉันไม่ได้ระบุ ฉันระบุเพียงชื่อของอินสแตนซ์:

  • ไม่ทำงาน: SQL2016
  • ทำงาน: .\SQL2016

1

หลังจากทำตามขั้นตอนที่กล่าวโดย @ Ravindra Bagaleแล้วให้ลองทำตามขั้นตอนนี้ Server name: localhost\{Instance name you were gave}

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


0

ลองเปลี่ยน User ที่เป็นเจ้าของบริการเป็น Local System หรือใช้บัญชีผู้ดูแลระบบของคุณ

ภายใต้บริการฉันเปลี่ยน Service SQL Server (MSSQLSERVER) Log On จาก NT Service \ Sql ... เป็น Local System คลิกขวาที่บริการแล้วไปที่แท็บเข้าสู่ระบบแล้วเลือกปุ่มตัวเลือกบัญชีระบบภายใน คุณสามารถบังคับให้ผู้ใช้รายอื่นเรียกใช้งานได้เช่นกันหากเหมาะสมกว่า

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