SQL Server เริ่มทำงาน แต่ไม่ได้ฟังพอร์ตใด ๆ


9

ฉันเพิ่งติดตั้ง SQL Server 2012 ยังไม่มีการสร้างฐานข้อมูล และฉันสามารถเปิด Studio จัดการด้วย sa / รหัสผ่าน Binn \ sqlservr.exe เริ่มทำงานเป็นบริการและฉันเห็นว่ามันเริ่มต้นในรายการบริการ อย่างไรก็ตามมันไม่ได้ฟังพอร์ต 1433 หรือแม้กระทั่งไม่ฟังพอร์ตใด ๆ โดยค่าเริ่มต้นตามที่ฉันตรวจสอบด้านล่าง:

tasklist|find /I "sql"

ฉันได้:

sqlservr.exe                  5668 Services                   0     40,112 K

ที่ 5668 ฉันคิดว่าเป็น PID จากนั้นรับ PID = "5668" กำลังฟังพอร์ตที่:

netstat -ano | find /I "5668"

แต่ฉันไม่ได้อะไรเลยนอกจากว่างเปล่า ในทางกลับกันหลังจากค้นหาโพสต์ในเว็บไซต์นี้ฉันตรวจสอบการกำหนดค่าเซิร์ฟเวอร์ SQL ของฉันอีกครั้ง: start-> โปรแกรมทั้งหมด -> Microsoft SQL Server 2012 -> เครื่องมือกำหนดค่า -> ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL -> SQL Server SQL Client 11.0 การกำหนดค่า -> ไคลเอนต์โปรโตคอล -> TCP / IP -> พอร์ตเริ่มต้น 1433 มีบริการ 3 รายการคือ SQL Server (MyInstanceName), ตัวแทนของเซิร์ฟเวอร์ SQL (MyInstanceName) และเบราว์เซอร์เซิร์ฟเวอร์ SQL สองอันสุดท้ายถูกหยุด

ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL-> การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL-> โพรโทคอลสำหรับ MyInstanceName -> TCP / IP ถูกปิดใช้งานตามค่าเริ่มต้นหลังจากที่ฉันเปิดใช้งานและเริ่มบริการและทำซ้ำ netstat -ano | find / I คำสั่ง "newPIDNum" ฉันพบ

TCP    0.0.0.0:52395          0.0.0.0:0              LISTENING  5668(newPIDNum)   

ทำไม 52395 แทน 1433 และฉันไม่สามารถสร้าง DSN โดยใช้ผู้ดูแลระบบแหล่งข้อมูล Windows ODBC ซึ่งส่งกลับข้อผิดพลาด: ไม่พบเซิร์ฟเวอร์ SQL ที่ระบุ ความช่วยเหลือใด ๆ สำหรับฉัน ขอบคุณ


การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL เริ่มต้น (สำหรับปี 2008 ไม่สามารถหารุ่น 2012 แต่ฉันไม่คิดว่ามันจะแตกต่างกัน)
Damien_The_Unbeliever

ขอบคุณ ความช่วยเหลือที่ดีจริงๆสำหรับฉัน มีความคิดเห็นเพิ่มเติมเกี่ยวกับลัง DSN ของฉันอีกหรือไม่

ดูเหมือนว่าคุณกำลังใช้อินสแตนซ์ที่มีชื่อ (อินสแตนซ์เริ่มต้นเท่านั้นที่ฟังใน 1433 เท่าที่ฉันทราบ) คุณรวมชื่ออินสแตนซ์เมื่อพยายามสร้าง DSN หรือไม่?
Damien_The_Unbeliever

ใช่เมื่อติดตั้งฉันป้อนชื่ออินสแตนซ์ เมื่อสร้าง DSN ฉันถูกขอให้ป้อนชื่อ DSN (ฉันป้อนชื่อผู้ใช้), เซิร์ฟเวอร์ SQL เพื่อเชื่อมต่อกับ (นี่คือกล่องตัวเลือกแบบหล่นลงและฉันพยายามสองตัวเลือกที่นี่ทั้งสองล้มเหลวหนึ่งคือ (ในท้องถิ่น) อีก คือ <.MyInstanceName>),

ฉันยังไม่เห็นที่อื่นที่จะรวม MyInstanceName และปุ่มถัดไปจะนำฉันไปสู่การตรวจสอบสิทธิ์เช่นเดียวกับ <การกำหนดค่าไคลเอนต์> ซึ่งฉันสามารถตั้งค่า <นามแฝงของเซิร์ฟเวอร์>, <ชื่อเซิร์ฟเวอร์> และตรวจสอบ <กำหนดพอร์ตแบบไดนามิก>

คำตอบ:


14

สิ่งที่ทำให้เซิร์ฟเวอร์ SQL ของฉันรับฟังการTCPเชื่อมต่อที่พอร์ต 1433 มีดังต่อไปนี้ ...

  1. เครื่องมือกำหนดค่า / เครื่องมือจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL
  2. คลิกที่ชื่ออินสแตนซ์ในการกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL
  3. เปิดใช้งานTCPการสื่อสาร
  4. คลิกขวาที่TCPรายการการสื่อสารและเลือกProperties
  5. คลิกที่แท็บที่อยู่ IP
  6. เปิดใช้งานที่อยู่ IP ที่ไม่ใช่ VMnet ทั้งหมดและป้อน 1433 ในPortรายการสำหรับ " IPAll "
  7. รีสตาร์ทเซิร์ฟเวอร์ SQL บนแท็บบริการเซิร์ฟเวอร์ SQL
  8. ตรวจสอบการกำหนดค่าของคุณด้วยnetstat -an:

    C:\>netstat -an | find "1433"
      TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING
      TCP    [::]:1433              [::]:0                 LISTENING

1
นี่เป็นทางออกเดียวที่เหมาะกับฉัน คู่มืออื่น ๆ ที่ไม่ได้พูดเกี่ยวกับพอร์ต IPAII ขอบคุณผู้ชายคุณทำให้วันของฉัน
QkiZ

13

ทำไม 52395 แทน 1433

อินสแตนซ์ที่มีชื่อฟังพอร์ตแบบไดนามิก เป็นหน้าที่ของSql Server Browser Serviceเพื่อแจ้งให้ลูกค้าทราบถึงพอร์ตที่แท้จริง Sql Browser รับฟัง UDP 1434 และตอบคำถามของรูปแบบ 'พอร์ตการฟังของอินสแตนซ์ "foo" คืออะไร ต้องใช้บริการเบราว์เซอร์เซิร์ฟเวอร์ Sql สำหรับทั้งโปรโตคอล TCP และชื่อ pipes ลูกค้าใช้เบราว์เซอร์เซิร์ฟเวอร์ SQL อย่างโปร่งใสไม่จำเป็นต้องมีการกำหนดค่าพิเศษ เพียงระบุชื่ออินสแตนซ์ในสตริงการเชื่อมต่อ (หรือ ODBC DSN) ไลบรารีไคลเอ็นต์จะรู้ว่าต้องติดต่อบริการ SQL Server Browser ก่อน

มี 3 บริการ SQL Server (MyInstanceName), SQL Server Agent (MyInstanceName) และ SQL Server Browser สองอันสุดท้ายถูกหยุด

เห็นได้ชัดว่า SQL Server Browser ทำงานได้ก็ต้องเริ่มทำงาน เริ่มและเปลี่ยนประเภทเริ่มต้นเป็นอัตโนมัติ

ในฐานะที่เป็นบันทึกย่อด้านการกำหนดค่าทางเลือกที่ใช้บ่อยคือการใช้พอร์ตแบบคงที่สำหรับอินสแตนซ์ที่มีชื่อและระบุพอร์ตในสตริงการเชื่อมต่อ ( tcp:<hostname>:<port>) มันมีข้อได้เปรียบในการดึง SQL Server Browser ออกจากสมการ แต่ต้องมีการบำรุงรักษาไคลเอ็นต์อย่างระมัดระวัง การเปลี่ยนพอร์ตฟังจำเป็นต้องมีการเปลี่ยนแปลงที่ไคลเอนต์ทุกเครื่องทุกเครื่องทุกตำแหน่งโดยปกติจะเจ็บปวดมาก ฉันขอแนะนำให้ทำการอ้างอิงบนเบราว์เซอร์เซิร์ฟเวอร์ SQL แทน


1

ไฟร์วอลล์ - 3 ของพวกเขา

ผู้ที่ไม่คุ้นเคยกับ Windows รุ่นใหม่กว่า (ฉันไม่คุ้นเคยกับ XP หลังจากนี้และพยายามติดตั้ง SQL Server บน Windows 10):

  • ไฟร์วอลล์ของคุณต้องถูกเปิดใช้งานใน3 ตำแหน่งแยกกัน (เช่นสำหรับ 3 โปรไฟล์ที่แตกต่างกัน)

หากคุณทำเพื่อแรกที่คุณเห็น (โปรไฟล์โดเมน) คุณจะยังคงสงสัยว่าทำไมคุณสามารถเชื่อมต่อกับพอร์ต 80 (IIS) แต่ไม่ใช่ 1433 (SQL Server)

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


1

ฉันยังไม่สามารถแสดงความคิดเห็นได้ (ชื่อเสียงต่ำ แต่ไม่ค่อยแอ็คทีฟ): แต่การปิดการใช้งาน Windows Firewall ดังที่ได้กล่าวมาแล้วเป็นคำตอบที่แย่ที่สุด จะถูกต้อง: สร้างกฎไฟร์วอลล์ใน "ขาเข้า" เพื่ออนุญาตการสื่อสารพอร์ต 1433 ใน IP ท้องถิ่นเหล่านั้น (หรือทั้งหมด) ที่คุณต้องการ และฉันยังแนะนำให้ตั้งค่า IP ระยะไกลที่ได้รับอนุญาตให้เชื่อมต่อกับ SQL Server นั้น

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