เปิดใช้งานการเชื่อมต่อระยะไกลสำหรับ SQL Server Express 2012


403

ฉันเพิ่งติดตั้ง SQL Server Express 2012 บนเซิร์ฟเวอร์ภายในบ้านของฉัน ฉันพยายามเชื่อมต่อจาก Visual Studio 2012 จากเดสก์ท็อปพีซีของฉันและได้รับข้อผิดพลาดที่รู้จักกันดี:

เกิดข้อผิดพลาดเกี่ยวกับเครือข่ายหรือเฉพาะอินสแตนซ์ขณะสร้างการเชื่อมต่อกับ SQL Server ไม่พบเซิร์ฟเวอร์หรือไม่สามารถเข้าถึงได้ ตรวจสอบว่าชื่ออินสแตนซ์ถูกต้องและมีการกำหนดค่า SQL Server เพื่ออนุญาตการเชื่อมต่อระยะไกล (ผู้ให้บริการ: เนมไปป์ผู้ให้บริการข้อผิดพลาด: 40 - ไม่สามารถเปิดการเชื่อมต่อกับ SQL Server)

สิ่งที่ฉันทำเพื่อพยายามแก้ไขสิ่งนี้:

  • เรียกใช้ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL บนเซิร์ฟเวอร์และเปิดใช้งานเบราว์เซอร์เซิร์ฟเวอร์ SQL
  • เพิ่มข้อยกเว้นไฟร์วอลล์ Windows บนเซิร์ฟเวอร์สำหรับ TCP, พอร์ต 1433 และ 1434 บนเครือข่ายย่อยท้องถิ่น
  • ตรวจสอบว่าฉันมีการเข้าสู่ระบบบนอินสแตนซ์ SQL Server สำหรับผู้ใช้ที่ฉันเข้าสู่ระบบในเดสก์ท็อป
  • ตรวจสอบว่าฉันใช้ Windows Authentication บนอินสแตนซ์ของ SQL Server
  • รีสตาร์ทเซิร์ฟเวอร์ SQL และเซิร์ฟเวอร์แดงทั้งหมดซ้ำ ๆ
  • ดึงผมออกมาหมด

ฉันจะรับ SQL Server 2012 Express เพื่ออนุญาตการเชื่อมต่อระยะไกลได้อย่างไร?


7
ฉันแก้ไขด้วยการเปิดใช้งานบริการ SQL Server Browser: D ขอบคุณสำหรับการโพสต์
alansiqueira27

1
การปลดล็อกพอร์ต 1433 UDP ช่วยฉันได้!
ไมเคิล

1
และถ้าคุณใช้ Azure VM อย่าลืมเปิดพอร์ตผ่านพอร์ทัลการจัดการของ Azure ด้วย (ซึ่งทำหน้าที่เป็นไฟร์วอลล์ภายนอกไปยังไฟร์วอลล์ของ VM ... ) เช่นเดียวกับ: stackoverflow.com/questions/34251382/…
jleach

สำหรับผู้ที่สงสัยว่า SQLl Server Configuration Manager หายไปในเวอร์ชั่นที่ใหม่กว่าตรงนี้
ตรงไหน

คำตอบ:


731

ดีดีใจที่ฉันถาม ทางออกที่ฉันค้นพบในที่สุดก็มาถึงที่นี่:

ฉันจะกำหนดค่า SQL Server Express ให้อนุญาตการเชื่อมต่อ tcp / ip ระยะไกลบนพอร์ต 1433 ได้อย่างไร

  1. เรียกใช้ตัวจัดการการตั้งค่าคอนฟิกเซิร์ฟเวอร์ SQL
  2. ไปที่การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL> โปรโตคอลสำหรับ SQLEXPRESS
  3. ตรวจสอบให้แน่ใจว่าเปิดใช้งาน TCP / IP แล้ว

จนถึงตอนนี้ดีมากและคาดหวังทั้งหมด แต่แล้ว:

  1. คลิกขวาบน TCP / IP และเลือกProperties
  2. ตรวจสอบว่าภายใต้ IP2 ที่อยู่ IP ถูกตั้งค่าเป็นที่อยู่ IP ของคอมพิวเตอร์บนเครือข่ายย่อยในเครื่อง
  3. เลื่อนลงไปที่ IPAll
  4. ตรวจสอบให้แน่ใจว่าพอร์ต TCP แบบไดนามิกคือว่างเปล่า (ของฉันถูกตั้งค่าเป็นหมายเลขพอร์ต 5 หลัก)
  5. ตรวจสอบให้แน่ใจว่าพอร์ต TCPถูกตั้งไว้ที่1,433 (ของฉันว่างเปล่า)

(นอกจากนี้หากคุณทำตามขั้นตอนเหล่านี้คุณไม่จำเป็นต้องเปิดใช้งานเบราว์เซอร์เซิร์ฟเวอร์ SQL และคุณต้องอนุญาตพอร์ต 1433 เท่านั้นไม่ใช่ 1434)

ห้าขั้นตอนพิเศษเหล่านี้เป็นสิ่งที่ฉันจำไม่ได้ว่าต้องทำใน SQL Server Express หรือก่อนหน้านี้ ดูเหมือนว่าจำเป็นเพราะฉันใช้อินสแตนซ์ที่มีชื่อ (myservername \ SQLEXPRESS) บนเซิร์ฟเวอร์แทนที่จะเป็นอินสแตนซ์เริ่มต้น ดูที่นี่:

กำหนดค่าเซิร์ฟเวอร์ให้ฟังบนพอร์ต TCP เฉพาะ (ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL)


7
ถ้า SQL Server Express ไม่ใช่อินสแตนซ์เท่านั้นอาจจำเป็นต้องใช้ UNASSIGN พอร์ต 1433 ในอินสแตนซ์อื่น ฉันมีอินสแตนซ์เริ่มต้นของ 2008 R2 (MSSQLSERVER) และวิธีเดียวที่ฉันสามารถเชื่อมต่อกับทั้งคู่จากภายนอกคือการกำหนดพอร์ต 1433 ให้กับอินสแตนซ์ 2012 (ต่อไปนี้) และเปลี่ยนการกำหนดพอร์ตสำหรับอินสแตนซ์เริ่มต้นเก่าเป็น TCP ไดนามิก พอร์ต = "0" และ TCP พอร์ต = "" (ว่าง) การทำเช่นนี้เป็นการมอบการเข้าถึงอินสแตนซ์เริ่มต้นเท่านั้น
Robert Calhoun

17
ที่IPAllตั้งค่าเป็นคำแนะนำที่ SAVIOR! Mine เป็นเหมือนของคุณ ... : D
Leniel Maccaferri

18
ในกรณีที่ช่วยคนอื่น ... สิ่งนี้ช่วยได้ แต่ฉันยังไม่สามารถเชื่อมต่อได้จนกว่าฉันจะเริ่มบริการเบราว์เซอร์เซิร์ฟเวอร์ SQL (หมายเหตุ: ฉันต้องไปที่แอปพลิเคชัน "บริการ" ของ Windows เพื่อทำสิ่งนี้เนื่องจากประเภทการเริ่มต้นของบริการ SQL Server Browser คือ "ปิดการใช้งาน" ด้วยเหตุผลบางประการเปลี่ยนประเภทการเริ่มต้นเป็น "อัตโนมัติ" เริ่มบริการแล้ว สามารถเชื่อมต่อได้)
mercurial

9
ใน Windows 8 และ SQL 2012 Express SP1 ติดตั้งกับอินสแตนซ์ SQLEXPRESS ฉันต้องตั้งค่าพอร์ตแบบไดนามิกเป็นอย่างอื่นนอกจากว่างเปล่า (ถ้าคุณลบให้ตั้งค่าเป็น 0 จากนั้นมันจะคำนวณพอร์ตแบบสุ่มใหม่ให้คุณ) และเปิด TCP ทั้งสอง กฎพอร์ตขาเข้า 1433 และ UDP 1434 ในแผงควบคุมไฟร์วอลล์ขั้นสูง เมื่อพอร์ตไดนามิกว่างเปล่า SQL Server จะหยุดทำงานเมื่อเริ่มต้นระบบ
Tony Wall

10
แค่อยากจะพูดขอบคุณและโหวตขึ้น คุณช่วยฉันมากเวลา คุณต้องการอัพเดตโพสต์ของคุณด้วยไวยากรณ์การเชื่อมต่อที่ถูกต้องหรือไม่? ฉันจำเป็นต้องใช้myserver\sqlexpress,[portnumber]โดยไม่ต้องวงเล็บ สังเกตว่ามันเป็น,และไม่ใช่:
Marco

105

วิธีที่ถูกต้องในการเชื่อมต่อระยะไกล SQL Server (โดยไม่ต้องเปิดพอร์ต UDP 1434 และเปิดใช้งานเบราว์เซอร์ของ SQL Server)คือการใช้IP และพอร์ตแทนชื่ออินสแตนซ์

การใช้ไอพีและพอร์ตแทนอินสแตนซ์ที่ตั้งชื่อนั้นปลอดภัยกว่าเนื่องจากช่วยลดพื้นที่การโจมตี

บางที 2 รูปภาพพูด 2,000 คำ ...

วิธีนี้ใช้พอร์ตที่ระบุ (นี่คือสิ่งที่คนส่วนใหญ่ต้องการฉันเชื่อ)

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

วิธีนี้ต้องเปิดพอร์ต UDP 1434 และ SQL Server Browser ทำงาน

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


คุณสามารถอธิบายสิ่งที่คุณหมายถึงโดยบอกว่านี่เป็นวิธีที่ "ถูกต้อง" หรือไม่?
Ryan Lundy

3
@Kyralessa Ha! ... ตอนนี้ฉันเงียบขรึมอีกครั้งหลังจากที่ผมดึง 4-5 ชั่วโมงเพื่อพยายามเชื่อมต่อกับอินสแตนซ์ระยะไกลของฉันฉันควรจะอธิบายว่า 'ถูกต้อง' ที่นี่มีไว้เพื่ออ่านจากบริบทของฉัน การเชื่อมต่อโดยใช้ชื่ออินสแตนซ์นั้นไม่ถูกต้องเนื่องจากฉันไม่ได้เปิดใช้งานเบราว์เซอร์เซิร์ฟเวอร์ SQL
Rosdi Kasim

ฉันได้เพิ่มความกระจ่างในคำตอบเพื่อหลีกเลี่ยงความเข้าใจผิด
Rosdi Kasim

1
ขอบคุณ;) เมื่อคุณไม่สามารถเรียกใช้บริการเบราว์เซอร์ได้คุณจะต้องระบุพอร์ต
Arman McHitarian

3
บวก 1 สำหรับการแสดงว่า MS ใช้เครื่องหมายจุลภาคแทนที่จะใช้คอลัมน์เป็นตัวคั่นสำหรับหมายเลขพอร์ต
Jorj

32

อีกหนึ่งสิ่ง...

Kyralessa ให้ข้อมูลที่ดี แต่ฉันมีอีกสิ่งหนึ่งที่จะเพิ่มที่ฉันถูกนิ่งงันแม้หลังจากบทความนี้

ภายใต้การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL> โปรโตคอลสำหรับเซิร์ฟเวอร์> เปิดใช้งาน TCP / IP คลิกขวาที่ TCP / IP และเลือกคุณสมบัติ ภายใต้ที่อยู่ IP คุณจะต้องตั้งค่าให้เปิดใช้งานเป็นใช่สำหรับการเชื่อมต่อแต่ละประเภทที่คุณใช้

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


18

คุณสามารถใช้สิ่งนี้เพื่อแก้ปัญหานี้:

ไปที่ START> EXECUTE แล้วเรียกใช้CLICONFG.EXE

โพรโทคอลเนมไปป์จะเป็นอันดับแรกในรายการจดบันทึกและโปรโมต TCP / IP

ทดสอบแอปพลิเคชันอย่างละเอียด

ฉันหวังว่าความช่วยเหลือนี้


ว้าวช่างเป็นอัญมณีอะไร ... ขอบคุณ ไม่เคยรู้ว่ามีอยู่จริง
Louis van Tonder

1
สิ่งนี้กำหนดค่าไคลเอนต์เพื่อใช้ TCP / IP ไม่ใช่เซิร์ฟเวอร์
mcr

OMG มันใช้งานได้ !! เพิ่งลงชื่อเข้าใช้เพื่อลงคะแนนสำหรับคำตอบนี้ ขอบคุณ
Aki

15

คุณยังสามารถตั้งค่า

ฟังทั้งหมดเป็น NO

ในกล่องโต้ตอบโปรโตคอลจากนั้นในที่อยู่ IP IP1 (พูด)

เปิดใช้งานการตั้งค่าเป็นใช่

กำหนดที่อยู่ IP ของปี

ตั้งค่า TCP Dynamic เป็น Blank และ

พอร์ต TCP ถึง 1433 (หรืออะไรก็ตาม)


การทำเช่นนี้ใน Windows 8.1 ที่ติดตั้ง SQL 2012 Express SP1 ทำให้ SQL เริ่มต้นการทำงานเมื่อ :(
Zhaph - Ben Duguid

ฉันตั้งค่ารายการ IP ทั้งหมด 1, 2, ... เป็นเปิดใช้งาน + ใช้งานลบแบบไดนามิกลบพอร์ตและตั้งค่าพอร์ต IPAll เป็น 1433 จากนั้นต้องเพิ่มกฎเพื่อเปิด TCP 1433 และ UPD 1434 ในไฟร์วอลล์ (1434 ไม่จำเป็นหากไม่ได้ใช้ชื่อ แต่เป็นเพียงหมายเลขพอร์ต)
โมรเดชัย

11

บทความนี้ช่วยฉัน ...

วิธีเปิดใช้งานการเชื่อมต่อระยะไกลใน SQL Server

ทุกอย่างใน SQL Server ได้รับการกำหนดค่าปัญหาของฉันคือไฟร์วอลล์กำลังบล็อกพอร์ต 1433


ทุกคนรู้หรือข้ามพอร์ต Azure ที่อนุญาตได้อย่างง่ายดาย ไม่ทราบว่าพอร์ตอาจถูกบล็อกโดยไฟร์วอลล์ WINDOWS VM ขอบคุณ. + 1
2b77bee6-5445-4c77-b1eb-4df3e5

11

ฉันมีปัญหานี้เมื่อเร็ว ๆ นี้ 2558 สิงหาคม

แก้ไขได้โดยการเปิดตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL

  • การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL -> โปรโตคอลสำหรับ SQLEXPRESS
  • คุณสมบัติบน TCP / IP -> แท็บ IP Adresses
  • ทุกอย่างยังคงเป็นค่าเริ่มต้นตั้ง IPALL เพียง: TCP พอร์ตเป็น1433

สามารถเชื่อมต่อกับเครื่องจัดการเซิร์ฟเวอร์ SQLกับเครื่อง: [hostaddress], 1433

ตัวอย่าง:

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


6

ในการติดตั้ง SQL Server 2012 Developer Edition ของฉันติดตั้งด้วยการตั้งค่าเริ่มต้นฉันเพิ่งโหลดตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL -> การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL -> โปรโตคอลสำหรับ MSSQLSERVER และเปลี่ยน TCP / IP จาก Disabled เป็น Enabled


1
บันทึกด่วน: สำหรับฉันนี่ใช้ไม่ได้ IP ผิดอยู่ในนั้นด้วยเหตุผลบางอย่าง อย่างไรก็ตามขั้นตอนของ Kyralessa ทำเคล็ดลับตั้งแต่พวกเขา invovled อัปเดต IP
Brian MacKay

สิ่งนี้ใช้ได้กับเซิร์ฟเวอร์ตัวใดตัวหนึ่งของฉัน แต่ไม่ใช่สำหรับเซิร์ฟเวอร์ตัวอื่น
cheny

5

ฉันต้องเพิ่มกฎพอร์ตไฟร์วอลล์ขาเข้าเพื่อเปิดพอร์ต UDP 1434 นี่คือเบราว์เซอร์เซิร์ฟเวอร์ Sql หนึ่งฟัง


3

ฉันชอบวิธีการของ "Rosdi Kasim" เนื่องจากไม่ต้องการรายละเอียดการกำหนดค่าบน IP

ฉันจะลืมมันอีกครั้งแน่นอนเมื่อฉันลองเซิร์ฟเวอร์อื่นอีกครั้ง

Keep It Simple Stupid (KISS) เพียงแค่เปิดใช้งานบริการเบราว์เซอร์เซิร์ฟเวอร์ Sql จากนั้นเพิ่ม \ SQLEXPRESS ที่อยู่เบื้องหลัง IP เมื่อคุณเชื่อมต่อเซิร์ฟเวอร์

การใช้ IP โดยตรงโดยไม่ใช้ "\ SQLEXPRESS" เป็นจุดที่ฉันล้มเหลวเนื่องจากไม่ได้ใช้พอร์ตเริ่มต้น

ขอบคุณ


3

ฉันมีปัญหาเดียวกันกับอินสแตนซ์ของ SQL Server 2014 ที่ติดตั้งไว้ภายในเครื่อง การเชื่อมต่อใช้FQDN\InstanceNameจะล้มเหลวในขณะที่การเชื่อมต่อโดยใช้เพียงฉันhostname\InstanceNameทำงาน ตัวอย่างเช่น: การเชื่อมต่อโดยใช้mycomputername\sql2014งานได้ แต่ใช้mycomputername.mydomain.org\sql2014ไม่ได้ DNS ได้รับการแก้ไขอย่างถูกต้องเปิดใช้งาน TCP / IP ภายในตัวจัดการการกำหนดค่า SQL เพิ่มกฎ Windows Firewall (จากนั้นปิดไฟร์วอลล์สำหรับการทดสอบเพื่อให้แน่ใจว่าไม่ได้ปิดกั้นอะไร) แต่ไม่มีผู้ใดที่แก้ไขปัญหาได้

ในที่สุดฉันต้องเริ่มบริการ " SQL Server Browser " บน SQL Server และแก้ไขปัญหาการเชื่อมต่อ

ฉันไม่เคยรู้เลยว่าบริการ SQL Server Browser ช่วย SQL Server ในการเชื่อมต่อ ฉันอยู่ภายใต้ความรู้สึกว่ามันช่วยเติมข้อมูลแบบดรอปดาวน์เมื่อคุณคลิกเซิร์ฟเวอร์ "เรียกดูเพิ่มเติม" เพื่อเชื่อมต่อ แต่จริง ๆ แล้วมันช่วยจัดเรียงคำขอของไคลเอ็นต์กับพอร์ตที่ถูกต้อง # เพื่อใช้ถ้าพอร์ต # ไม่ได้กำหนดอย่างชัดเจน วิธีการผูกเว็บไซต์ช่วยบรรเทาปัญหาเดียวกันบน IIS เว็บเซิร์ฟเวอร์ที่โฮสต์หลายเว็บไซต์)

รายการเชื่อมต่อนี้เป็นสิ่งที่ทำให้ฉันมีข้อสงสัยเกี่ยวกับบริการเบราว์เซอร์เซิร์ฟเวอร์ SQL: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine- ชื่อ

  • เมื่อคุณใช้ wstst05 \ sqlexpress เป็นชื่อเซิร์ฟเวอร์รหัสไคลเอนต์จะแยกชื่อเครื่องออกจากชื่ออินสแตนซ์และเปรียบเทียบ wstst05 กับชื่อ netbios ฉันเห็นว่าไม่มีปัญหาสำหรับพวกเขาที่จะจับคู่และการเชื่อมต่อถือว่าเป็นท้องถิ่น จากนั้นเราดึงข้อมูลที่จำเป็นโดยไม่ต้องติดต่อเบราว์เซอร์ SQL และเชื่อมต่อกับอินสแตนซ์ SQL ผ่านหน่วยความจำที่ใช้ร่วมกันโดยไม่มีปัญหาใด ๆ
  • เมื่อคุณใช้ wstst05.capatest.local \ sqlexpress รหัสไคลเอนต์จะไม่ทำการเปรียบเทียบชื่อ (wstst05.capatest.local) กับชื่อ netbios (wstst05) และพิจารณาการเชื่อมต่อ "remote" นี่คือการออกแบบและเราจะพิจารณาปรับปรุงในอนาคต อย่างไรก็ตามเนื่องจากการพิจารณาการเชื่อมต่อระยะไกลและความจริงที่ว่ามันเป็นอินสแตนซ์ที่มีชื่อลูกค้าตัดสินใจว่าจะต้องใช้ SQLBrowser สำหรับการจำแนกชื่อ พยายามติดต่อ SQL Browser บน wstst05.capatest.local (UDP พอร์ต 1434) และดูเหมือนว่าส่วนนั้นจะล้มเหลว ดังนั้นข้อผิดพลาดที่คุณได้รับ

เหตุผลสำหรับบริการ "เบราว์เซอร์เซิร์ฟเวอร์ SQL" จาก TechNet (เน้นที่เพิ่มโดยฉัน): https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx

จากส่วน "การใช้เบราว์เซอร์เซิร์ฟเวอร์ SQL":

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

  • องค์ประกอบที่พยายามที่จะเชื่อมต่อกับกรณีที่มีชื่ออย่างเต็มที่โดยไม่ต้องระบุพารามิเตอร์ทั้งหมด (เช่นพอร์ต TCP / IP หรือชื่อท่อ)
  • ส่วนประกอบใด ๆ ที่สร้างหรือส่งผ่านข้อมูลเซิร์ฟเวอร์ \ อินสแตนซ์ที่สามารถนำมาใช้โดยคอมโพเนนต์อื่นในภายหลังเพื่อเชื่อมต่อใหม่
  • การเชื่อมต่อกับอินสแตนซ์ที่มีชื่อโดยไม่ระบุหมายเลขพอร์ตหรือไพพ์
  • DAC ไปยังอินสแตนซ์ที่มีชื่อหรืออินสแตนซ์เริ่มต้นหากไม่ได้ใช้พอร์ต TCP / IP 1433
  • บริการตัวเปลี่ยนเส้นทาง OLAP
  • การแจกแจงเซิร์ฟเวอร์ใน SQL Server Management Studio, Enterprise Manager หรือ Query Analyzer

หากคุณใช้ SQL Server ในสถานการณ์ไคลเอนต์ - เซิร์ฟเวอร์ (ตัวอย่างเช่นเมื่อแอปพลิเคชันของคุณเข้าถึง SQL Server ผ่านเครือข่าย) หากคุณหยุดหรือปิดใช้งานบริการ SQL Server Browser คุณต้องกำหนดหมายเลขพอร์ตเฉพาะให้กับแต่ละอินสแตนซ์และ เขียนรหัสแอปพลิเคชันไคลเอนต์ของคุณเพื่อใช้หมายเลขพอร์ตนั้นเสมอ วิธีการนี้มีปัญหาดังต่อไปนี้ :

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

และข้อมูลเพิ่มเติมจากบทความเดียวกันจากส่วน "วิธีการทำงานของเบราว์เซอร์เซิร์ฟเวอร์ SQL":

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


2

ฉันต้องเพิ่มพอร์ตผ่านเครื่องมือจัดการการกำหนดค่าและเพิ่มหมายเลขพอร์ตในการเชื่อมต่อ sql ของฉัน[โฮสต์] \ [ชื่ออินสแตนซ์ db], 1433

จดบันทึก, (เครื่องหมายจุลภาค) ระหว่าง instancename และพอร์ต


1

ฉันมีปัญหาแตกต่างจากคำตอบทั้งหมดที่กล่าวถึง!

ฉันควรเริ่มด้วยการบอกว่าฉันมีอยู่ใน Visual Studio ไม่ใช่ SQL Server Express แต่วิธีการแก้ปัญหาควรเหมือนกันทุกประการ

เอาล่ะพระเจ้ามันง่ายจริง ๆ และโง่เล็กน้อย เมื่อฉันพยายามสร้างฐานข้อมูลและ Visual Studio แนะนำชื่อของ SQL Server ให้ฉันชื่อผู้ใช้ Windows ของฉันและเนื่องจากเป็นชื่อของเซิร์ฟเวอร์ที่ฉันไป

ในความเป็นจริงมันเป็นจริงชื่อผู้ใช้ของ Windows \SQLEXPRESS+ หากคุณไม่ได้เปลี่ยนการตั้งค่าใด ๆ นี่อาจเป็นของคุณเช่นกัน ถ้ามันทำงานได้หยุดอ่าน; นี่คือคำตอบของฉัน ถ้ามันใช้งานไม่ได้บางทีชื่อก็ต่างออกไป

ถ้าอย่างฉันคุณมีปัญหานี้ใน Visual Studio เพื่อตรวจสอบสิ่งที่คุณทำตามขั้นตอนเหล่านี้:

  1. เปิดไอคอน Studio จัดการเซิร์ฟเวอร์ SQLไอคอน
  2. หากคุณไม่เห็นเซิร์ฟเวอร์ของคุณ (เชื่อมต่อไปทางซ้ายตามค่าเริ่มต้น) กดF8หรือไปที่View -> Object ExplorerExplorer
  3. คลิกขวาที่ชื่อเซิร์ฟเวอร์และเลือกคุณสมบัติ (รายการสุดท้าย)
  4. ที่ด้านล่างซ้ายคุณสามารถเห็นชื่อจริงของเซิร์ฟเวอร์ภายใต้ " เซิร์ฟเวอร์ " (ไม่ใช่การเชื่อมต่อ แต่อยู่ด้านบน)

นี่คือชื่อของเซิร์ฟเวอร์และนี่คือสิ่งที่คุณควรพยายามเชื่อมต่อ! ไม่ใช่สิ่งที่ Visual Studio แนะนำ!


1

อีกสิ่งหนึ่งที่คุณควรตรวจสอบคือคุณสะกดชื่อที่ถูกต้องสะกดถูกต้อง!

บทความนี้มีประโยชน์มากในการแก้ไขปัญหาการเชื่อมต่อ: วิธีการแก้ไขการเชื่อมต่อกับโปรแกรมฐานข้อมูลเซิร์ฟเวอร์ SQL


1

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


0

สิ่งที่คุณต้องทำคือเปิดพอร์ตที่เกี่ยวข้องในไฟร์วอลล์ของเซิร์ฟเวอร์


6
น่าเสียดายที่ไม่ใช่ "สิ่งที่คุณต้องทำ" มีขั้นตอนอื่น ๆ อีกไม่กี่ขั้นตอนที่ต้องดำเนินการตามที่ระบุไว้ในคำตอบที่ยอมรับด้านบน
saluce

2
ที่จริงแล้วในกรณีของฉันนี่คือทั้งหมดที่ฉันต้องทำดังนั้นการทำเครื่องหมายอย่างไม่เป็นธรรมและการป้อนข้อมูลที่เป็นประโยชน์จริง
MagicalArmchair

1
การเพิ่มกฎเพื่อเปิดพอร์ต 1433 เป็นสิ่งที่แก้ไขให้ฉัน
GiddyUpHorsey

ฉันคิดว่ามันยุติธรรมที่จะพูดว่า "หลายสิ่งหลายอย่างอยู่ในการจัดตำแหน่งสิ่งที่จำเป็นสำหรับคุณที่จะเปลี่ยนแปลงขั้นตอนเพิ่มเติม"
Mordachai

ฉันต้องทำทั้งหมดของ Kyralessa และ Pete's และอันนี้ด้วยก่อนที่ฉันจะได้รับ Windows 10 ที่ให้บริการ SQL
alfadog67

0

มีปัญหาในการเชื่อมต่อกับ SQL Server หรือไม่

ลองยกเลิกการเชื่อมต่อไฟร์วอลล์

หากคุณสามารถเชื่อมต่อกับไฟร์วอลล์ที่ถูกตัดการเชื่อมต่ออาจพลาดกฎการป้อนข้อมูลบางอย่างเช่น "sql service broker" ให้เพิ่มกฎอินพุตนี้ไปยังไฟร์วอลล์ของคุณ:

"การเชื่อมต่อ ADMIN ของ SQL" TCP PORT 1434

"การเชื่อมต่อ ADMIN ของ SQL" พอร์ต UDP 1434

"บริการวิเคราะห์ SQL" พอร์ต TCP 2383

"บริการวิเคราะห์เบราว์เซอร์ SQL" พอร์ต TCP 2382

"SQL DEBUGGER / RPC" TCP PORT 135

"SQL SERVER" TCP PORT 1433 และอื่น ๆ หากคุณมีพอร์ต dinamic

"SQL SERVICE BROKER" TCP PORT 4022

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