เหตุใดฉันจึงได้รับ“ ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ - ข้อผิดพลาดเกี่ยวกับเครือข่ายหรืออินสแตนซ์เฉพาะ” ได้


378

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามเชื่อมต่อกับ SQL Server:

ไม่สามารถเชื่อมต่อกับ 108.163.224.173

เกิดข้อผิดพลาดเกี่ยวกับเครือข่ายหรือเฉพาะอินสแตนซ์ขณะสร้างการเชื่อมต่อกับ SQL Server

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

(ผู้ให้บริการ: เนมไปป์ผู้ให้บริการข้อผิดพลาด: 40 - ไม่สามารถเปิดการเชื่อมต่อกับ SQL Server) (Microsoft SQL Server ข้อผิดพลาด: 1326)

ข้อผิดพลาดนี้เกิดขึ้นเมื่อฉันพยายามกำหนดค่าฐานข้อมูลของฉันเป็น gridview ใน Visual Studio 2010 ฉันกำลังสูญเสียว่าจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร

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


11
ping ไม่น่าเชื่อถือสำหรับการทดสอบการเชื่อมต่อเซิร์ฟเวอร์ SQL คำร้องขอ ICMP echo ถูกปิดใช้งานตามค่าเริ่มต้นใน Windows Server ชื่อผู้ใช้หรือรหัสผ่านที่ไม่ถูกต้องไม่ใช่สิ่งที่ข้อผิดพลาดบอกคุณเลยนั่นเป็นข้อผิดพลาดที่แตกต่างอย่างสิ้นเชิง
Sean Airey

1
ลองบทความนี้มันจะไปผ่านขั้นตอนสวยมากทั้งหมดที่คุณจะต้องแก้ไขปัญหาการเชื่อมต่อของคุณ: social.technet.microsoft.com/wiki/contents/articles/...
ฌอน Airey

3
ดูคำตอบของฉันที่นี่ด้วยภาพหน้าจอของฉันหากคุณได้รับข้อผิดพลาดนี้กับ SQL Server {version} Express เมื่อตั้งค่าเป็นครั้งแรก ฉันกลับมาที่ StackOverflow และใช้คำตอบของฉันอีกครั้งเพราะเป็นระบบเดียวที่ใช้งานได้ stackoverflow.com/questions/1391503/…
MacGyver

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

วันนี้ผมใช้เวลามากกับเรื่องนี้ในที่สุดสิ่งที่ทำงานสำหรับฉันก็คือ: เปิดโปรแกรม Sql Server Configuration Manager -> โปรโตคอลสำหรับ <ตัวอย่าง> -> TCP / IP -> ที่อยู่ IP (แท็บ) ไปที่รายการสุดท้ายIP ทั้งหมดและกล่าวถึงพอร์ต TCP 1433 ตอนนี้เริ่มการทำงานของSQL Server (เป็นต้น)โดยใช้services.msc หลังจากนี้ปัญหาได้รับการแก้ไข
ani627

คำตอบ:


301

ฉันพบว่าเทคนิคต่อไปนี้มีประโยชน์:

  1. ตรวจสอบให้แน่ใจว่าเอนจินฐานข้อมูลของคุณได้รับการกำหนดค่าให้ยอมรับการเชื่อมต่อระยะไกล :

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

    • เริ่ม> เรียกใช้> Firewall.cpl
    • คลิกที่แท็บข้อยกเว้น
    • เพิ่ม sqlservr.exe (โดยทั่วไปจะอยู่ในC:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Binตรวจสอบการติดตั้งของคุณสำหรับเส้นทางโฟลเดอร์จริง) และพอร์ต (ค่าเริ่มต้นคือ1433)
    • ตรวจสอบสตริงการเชื่อมต่อของคุณเช่นกัน
  3. ตรวจสอบว่าบริการเซิร์ฟเวอร์ SQLของคุณทำงานและทำงานอย่างถูกต้องหรือไม่:

    • ไปที่โปรแกรมทั้งหมด> Microsoft SQL Server 2008> เครื่องมือกำหนดค่า> ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL> บริการเซิร์ฟเวอร์ SQL
    • ตรวจสอบเพื่อให้แน่ใจว่าสถานะบริการ SQL Server กำลังทำงาน

    นอกจากนี้ให้ตรวจสอบว่าเซิร์ฟเวอร์ระยะไกลที่อยู่ในเครือข่ายเดียวกัน เรียกใช้sqlcmd -Lเพื่อยืนยันหากเซิร์ฟเวอร์ของคุณรวมอยู่ในรายการเครือข่ายของคุณ

  4. เปิดใช้งาน TCP / IPในการกำหนดค่าเซิร์ฟเวอร์ SQL

    เมื่อมีการเชื่อมต่อ SQL Server สองเครื่องขึ้นไปทั่วทั้งเครือข่ายพวกเขาจะทำการสื่อสารทั้งหมดโดยใช้ TCP / IP พอร์ตเริ่มต้นของการติดตั้ง SQL Server คือ 1433 พอร์ตนี้สามารถเปลี่ยนแปลงได้ผ่านตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL ควรเปิดใช้งาน TCP / IP เพื่อให้ SQL Server เชื่อมต่อได้

    • ไปที่โปรแกรมทั้งหมด >> Microsoft SQL Server 2008 >> เครื่องมือกำหนดค่า >> ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL >> เลือก TCP / IP
    • คลิกขวาที่ TCP / IP >> คลิกที่ Enable

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


10
เปิดใช้งาน TCP / IP ในการกำหนดค่าเซิร์ฟเวอร์ SQL เป็นโซลูชันสำหรับฉันเมื่อใช้ SQL Server 2014 Express
Mike Richards

73
วันนี้ผมใช้เวลามากกับเรื่องนี้ในที่สุดสิ่งที่ทำงานสำหรับฉันก็คือ: เปิดโปรแกรม Sql Server Configuration Manager -> โปรโตคอลสำหรับ <ตัวอย่าง> -> TCP / IP -> ที่อยู่ IP (แท็บ) ไปที่รายการสุดท้ายIP ทั้งหมดและกล่าวถึงพอร์ต TCP 1433 ตอนนี้เริ่มการทำงานของSQL Server (<ตัวอย่าง>)โดยใช้services.msc หลังจากนี้ปัญหาได้รับการแก้ไข!
ani627

1
ฉันยังประสบปัญหาเฉพาะบนเซิร์ฟเวอร์ Sql ในพื้นที่ของฉันและแก้ไขด้วยการตรวจสอบบริการในท้องถิ่นของระบบปฏิบัติการและค้นหาบริการ Sql เฉพาะและเริ่มต้นทีละหนึ่ง มันทำงานได้สมบูรณ์แบบ
Faisal Naseer

4
ฉันก็มีปัญหาเดียวกันเข้าสู่เซิร์ฟเวอร์ sql พบว่าบริการ mssqlserer ก็หยุดแล้วเริ่มมัน สามารถเชื่อมต่อกับอินสแตนซ์ได้ตอนนี้
รัก

15
ยังจำ การENABLE SQL Server Browserให้บริการ มีการติดตั้งเซิร์ฟเวอร์ SQL จำนวนมากในเวลาของฉัน ... ถึงกระนั้นขั้นตอนนี้มักจะมีสถานการณ์ที่แตกต่างกันเกี่ยวข้อง :)
mschr

125

ฉันได้ทางออกสำหรับฉัน:

เปิด "ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL" เปิด

ตอนนี้คลิกที่ "การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL" และคลิกที่ "โปรโตคอลสำหรับชื่อ "

คลิกขวาที่ "TCP / IP" (ตรวจสอบให้แน่ใจว่าเปิดใช้งานแล้ว) คลิกที่ Properties

ตอนนี้เลือก "ที่อยู่ IP" แท็บ - และ - ไปที่รายการสุดท้าย "IP ทั้งหมด"

ป้อน "พอร์ต TCP" 1433

ตอนนี้ เริ่มต้นใหม่ "SQL Server .Name." ใช้ "services.msc" (winKey + r)

มันจะทำงาน...


ลองใช้วิธีนี้ แต่ด้วยเหตุผลบางอย่างเมื่อฉันคลิกขวาและเลือก "Properties" บน "TCP / IP" ใน windows10 มันไม่ได้ดึงหน้าต่างโต้ตอบสำหรับสิ่งนั้น โหนดอื่น ๆ โดยทั่วไปใน treeview จะปรากฏขึ้นโต้ตอบได้ดี ใครมีปัญหานี้และความคิดสำหรับการผ่านมันได้หรือไม่
Ryan Betker - healthNCode

3
ใน SQL Server 2014 ให้ใช้ (localdb) \ mssqllocaldb แทน (localdb) \ v11.0
Shalva Avanashvili

67
คัดลอกวางความคิดเห็นของฉัน(ซึ่งโพสต์เมื่อวันที่ 24 กุมภาพันธ์ 2015 - 7 เดือนก่อนโพสต์ของคุณ) เป็นคำตอบโดยไม่ให้เครดิตกับฉัน! : P
ani627

2
สิ่งนี้ใช้ได้ผล ฉันไม่สามารถเชื่อมต่อกับ SQL Server 2016 ทำการเปลี่ยนแปลงเหล่านี้และใช้งานได้! ขอบคุณ
Ankur

1
มันใช้งานได้สำหรับฉัน เพิ่งต้องเริ่มบริการใน "service.msc" หลังจากเปิดใช้งาน TCP / IP และเนมไปป์ในเครื่องมือจัดการการกำหนดค่า
Alif Noushad

100

เพิ่มความคิดเห็น upvoted หนักของฉันเป็นคำตอบกับภาพหน้าจอ

ฉันใช้เวลาไปกับเรื่องนี้มากในที่สุดสิ่งที่ได้ผลสำหรับฉันก็คือ:

1) Open Sql Server Configuration Manager -> การกำหนดค่าเครือข่ายเซิร์ฟเวอร์ SQL -> โปรโตคอลสำหรับ <(INSTANCE)> -> TCP / IP (ดับเบิลคลิกที่มัน)

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

2) เลือก -> ที่อยู่ IP (แท็บ)

3) ไปที่รายการสุดท้ายIP ทั้งหมดและกล่าวถึงพอร์ต TCP 1433

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

4) กดWin+Rและป้อนservices.msc

5) ตอนนี้เริ่มการทำงานของSQL Server <(เป็นต้น)>

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

หลังจากนี้ปัญหาได้รับการแก้ไข!



ทำงานให้ฉันแล้ว SQL Express 2012
lost_in_magento

ทำงานให้ฉันใน sql server 2012 หลังจากเปิดใช้งาน TCP เพิ่มหมายเลขพอร์ต 1433 เป็น TCP ALL และเริ่มบริการใหม่!
Chirag Khatsuriya

สำหรับฉันนอกจากนี้ฉันต้องอนุญาต TCP 1433 และ UDP 1434 ในไฟร์วอลล์
MarkusEgle

83

ฉันกำลังแก้ปัญหาว่าด้วยการเปิดบริการแล้วเริ่มทำงานSql Server (SQLEXPRESS)บริการ

รูปภาพบริการ


3
ฉันเห็นว่าบริการ Windows Server ของ Windows ถูกตั้งค่าเป็น Manual Startup Type ดังนั้นจึงไม่ได้เริ่มระบบใหม่เมื่อรีบูต มันควรจะตั้งเป็นอัตโนมัติ
robertburke

2
นี่คือสิ่งที่ฉันทำสถานะของฉันกำลังทำงานและ StartupType เป็นแบบอัตโนมัติ แต่ฉันยังคงประสบปัญหาดังนั้นฉันจึงใช้บริการจากประเภทหน้าต่างเรียกใช้services.mscจากนั้นฉันคลิกขวาที่ SQL Server (SQL EXPRESS) สำหรับเมนูบริบทและเพียงหยุดและเริ่ม บริการอีกครั้งและทำงานได้ดีสำหรับฉันหวังว่าจะช่วย
shaijut

22

ข้อผิดพลาดนี้ส่วนใหญ่เกิดขึ้นเมื่อบริการ SQL หยุดทำงานคุณต้องเริ่มบริการใหม่เพื่อไปที่หน้าต่างนี้คุณต้องค้นหาบริการเช่นนี้ - ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นค้นหา SQLSERVER (MSSQLSERVER) และเริ่มบริการใหม่

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

หวังว่ามันจะใช้ได้


18

กดwindow + R (Run window Open)และเรียกใช้ประเภทหน้าต่าง"services.msc"และบริการใหม่เปิดให้ค้นหา SQL SERVER ด้วยชื่ออินสแตนซ์ในกรณีของฉันSQL SERVER(SQLEXPRESS)จากนั้นให้เริ่มบริการนี้แล้วลองอีกครั้งเพื่อฉันหวังว่ามันจะทำงานให้คุณด้วยป้อนคำอธิบายรูปภาพที่นี่


คำตอบที่ให้ไว้ก่อนหน้านี้ ไม่ได้รับเหตุผลใด ๆ โพสต์มันอีกครั้ง
Anik Saha

8
เพื่อนกำลังเผชิญปัญหาเดียวกัน แต่ฉันไม่ทราบว่าเปิดบริการหน้าต่างร้อนแล้วฉันพบวิธีการและฉันคิดว่าแบ่งปันกับผู้คน
ฮาฟิซซาด

ขอบคุณ @HafizAsad คำตอบของคุณใช้ได้สำหรับฉัน
Adnan Ahmad

@AdnanAhmad คุณยินดีต้อนรับ ขอบคุณที่ชื่นชม
ฮาฟิซซาด

16

ในกรณีที่คุณอาจใช้ Express Edition :

เพิ่ม"\SQLEXPRESS"หลังจากชื่อเซิร์ฟเวอร์ของคุณ

เช่น "MY-SERVER\SQLEXPRESS"

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


13

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

  1. เปิด "Run" และป้อน services.msc
  2. ค้นหาบริการสำหรับ SQL Server (ชื่ออินสแตนซ์) และเบราว์เซอร์เซิร์ฟเวอร์ SQL ในแต่ละครั้งให้คลิกขวาเลือก "Properties" คัดลอกเส้นทางไปยังไฟล์ exe
  3. จากนั้นเปิดfirewall.cplคลิกอนุญาตแอปพลิเคชันหรือเพิ่มกฎเพิ่มเส้นทางที่คัดลอกก่อนหน้า (มีขั้นตอนที่คุณต้องทำตาม) ตรวจสอบโดเมนและส่วนตัวยกเลิกการเลือกสาธารณะ

นี่คือลิงก์ YouTube ที่คุณสามารถดูโพรซีเดอร์นี้: อนุญาตให้ SQL Server ผ่านไฟร์วอลล์ Windows


ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน สำคัญ: เพิ่มเบราว์เซอร์และเซิร์ฟเวอร์ในไฟร์วอลล์! +1
BendEg

ฉันมีปัญหาในการค้นหาไฟล์ sqlservr.exe นี่เป็นการหลอกลวงในการค้นหามัน
Stan

11

หากวิธีการแก้ปัญหาข้างต้นไม่ได้ผล (ไม่ได้ผลสำหรับฉัน) เพียงรีสตาร์ทคอมพิวเตอร์ของคุณและคุณจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ sql ของคุณ (localhost)


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

10

หลังจากทำทุกอย่างที่กล่าวถึงที่นี่:
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a- การเชื่อมต่อกับเซิร์ฟเวอร์ sql-microsoft-sql-server-error / ยังไม่ได้ผลสำหรับฉัน

ขั้นตอนการทำงานสำหรับฉัน:

Start > Run > cmd > sqlcmd -L

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

ฉันทำผิดพลาดอย่างโง่เขลาที่ฉันใช้ต่อไปMSSQLSERVERแทนที่จะใช้ชื่อเซิร์ฟเวอร์นี้

หวังว่านี่จะช่วยให้คนที่ทำผิดพลาดอย่างฉันได้ไหม

ขอบคุณ


7

ฉันใช้ SQL Server 2016 และ Window 10

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

สิ่งแรกคือการอนุญาตให้เชื่อมต่อระยะไกลกับ SQL Server สิ่งที่ฉันทำคือพิมพ์sqlservermanager13.mscที่เมนูเริ่มต้นเพื่อเปิดตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL ตรวจสอบให้แน่ใจว่าเปิดใช้งานสถานะ TCP / IP แล้ว ป้อนคำอธิบายรูปภาพที่นี่

ตรวจสอบหมายเลขพอร์ต TCP ของคุณโดยดับเบิลคลิกชื่อโปรโตคอล TCP / IP โดยปกติจะเป็น 1433 โดยค่าเริ่มต้น

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

ขั้นตอนต่อไปนี้กำหนดค่า Windows Firewall โดยใช้ Windows Firewall พร้อมสแนปอินคอนโซลการจัดการความปลอดภัยขั้นสูงของ Microsoft (MMC) ไฟร์วอลล์ Windows ด้วยการรักษาความปลอดภัยขั้นสูงจะกำหนดค่าส่วนกำหนดค่าปัจจุบันเท่านั้น

เพื่อเปิดพอร์ตในไฟร์วอลล์ Windows สำหรับการเข้าถึง TCP

  1. บนเมนูเริ่มคลิกเรียกใช้พิมพ์ WF.msc แล้วคลิกตกลง
  2. ในไฟร์วอลล์ Windows ด้วยการรักษาความปลอดภัยขั้นสูงในบานหน้าต่างด้านซ้ายคลิกขวากฎขาเข้าแล้วคลิกกฎใหม่ในบานหน้าต่างการกระทำ
  3. ในกล่องโต้ตอบประเภทกฎให้เลือกพอร์ตแล้วคลิกถัดไป
  4. ในกล่องโต้ตอบโพรโทคอลและพอร์ตให้เลือก TCP เลือกเฉพาะพอร์ตบนเครื่องแล้วพิมพ์หมายเลขพอร์ตของอินสแตนซ์ของโปรแกรมฐานข้อมูลเช่น 1433 สำหรับอินสแตนซ์เริ่มต้น คลิกถัดไป
  5. ในกล่องโต้ตอบการกระทำเลือกอนุญาตการเชื่อมต่อแล้วคลิกถัดไป
  6. ในกล่องโต้ตอบโปรไฟล์ให้เลือกโปรไฟล์ใด ๆ ที่อธิบายสภาพแวดล้อมการเชื่อมต่อคอมพิวเตอร์เมื่อคุณต้องการเชื่อมต่อกับโปรแกรมฐานข้อมูลแล้วคลิกถัดไป
  7. ในกล่องโต้ตอบชื่อพิมพ์ชื่อและคำอธิบายสำหรับกฎนี้แล้วคลิกเสร็จสิ้น

อีกสิ่งที่ต้องกำหนดค่า

เพื่อเปิดการเข้าถึง SQL Server เมื่อใช้พอร์ตแบบไดนามิก

  1. บนเมนูเริ่มคลิกเรียกใช้พิมพ์ WF.msc แล้วคลิกตกลง
  2. ในไฟร์วอลล์ Windows ด้วยการรักษาความปลอดภัยขั้นสูงในบานหน้าต่างด้านซ้ายคลิกขวากฎขาเข้าแล้วคลิกกฎใหม่ในบานหน้าต่างการกระทำ
  3. ในกล่องโต้ตอบประเภทกฎให้เลือกโปรแกรมแล้วคลิกถัดไป
  4. ในกล่องโต้ตอบโปรแกรมเลือกเส้นทางโปรแกรมนี้ คลิกเรียกดูและนำทางไปยังอินสแตนซ์ของ SQL Server ที่คุณต้องการเข้าถึงผ่านไฟร์วอลล์แล้วคลิกเปิด โดยค่าเริ่มต้น SQL Server จะอยู่ที่ Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ Sqlservr.exe SQL Server \ MSSQL13.MSSQLSERVER คลิกถัดไป
  5. ในกล่องโต้ตอบการกระทำเลือกอนุญาตการเชื่อมต่อแล้วคลิกถัดไป
  6. ในกล่องโต้ตอบโปรไฟล์ให้เลือกโปรไฟล์ใด ๆ ที่อธิบายสภาพแวดล้อมการเชื่อมต่อคอมพิวเตอร์เมื่อคุณต้องการเชื่อมต่อกับโปรแกรมฐานข้อมูลแล้วคลิกถัดไป
  7. ในกล่องโต้ตอบชื่อพิมพ์ชื่อและคำอธิบายสำหรับกฎนี้แล้วคลิกเสร็จสิ้น

ดูที่ Microsoft doucmentation ตั้งค่า Windows Firewall สำหรับการเข้าถึงโปรแกรมฐานข้อมูล


เมื่อวันที่ 10 อินสแตนซ์เซิร์ฟเวอร์ของฉันคอมพิวเตอร์ที่ใช้ Windows SQL เป็นที่ C: \ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Binn \ Sqlservr.exe
เมเยอร์สปิตเซอร์

7

คุณสามารถทดสอบวิธีการต่อไปนี้

  • a

    1. ตรวจสอบสตริงการเชื่อมต่อของโครงการ
    1. ไปที่บริการและรีสตาร์ทอินสแตนซ์ของ SQLServer
    1. เปิด 'ตัวจัดการการกำหนดค่า SQLServer'
    2. ในแผงด้านซ้ายเลือก 'SQLServer Network Configuration' และขยาย
    3. เลือก 'โปรโตคอลสำหรับ MSSQLServer'
    4. ในแผงด้านขวาคลิก dbl ที่ 'TCP / IP'
    5. ในแท็บ 'โปรโตคอล' ให้ตั้งค่า 'เปิดใช้งาน' เป็น 'ใช่'
    6. ในแท็บ 'ที่อยู่ IP' ให้เลื่อนลง
    7. ใน 'IPAll' ให้ตั้งค่า 'พอร์ต TCP' เป็น 1433
  • d
    1. เปิด 'ไฟร์วอลล์ด้วยความปลอดภัยขั้นสูง'
    2. ในแท็บด้านขวาเลือก 'กฎขาเข้า'

ในแท็บตรงกลางค้นหาระเบียนที่ 'local port' คือ 1433 หากคุณไม่พบลองสร้างมันด้วยระดับต่อไปนี้

  • ในเมนูเริ่มให้คลิกเรียกใช้พิมพ์ 'WF.msc' แล้วคลิกตกลง
  • ในแผงด้านซ้ายคลิก 'Windows Firewall with Advanced Security'
  • ในแผงด้านขวาคลิกขวา 'กฎขาเข้า' แล้วคลิก 'กฎใหม่'
  • ในกล่องโต้ตอบประเภทกฎให้เลือก 'พอร์ต' แล้วคลิกถัดไป
  • ในกล่องโต้ตอบโพรโทคอลและพอร์ตเลือก 'TCP' และเลือก 'พอร์ตภายในเครื่องเฉพาะ' จากนั้นพิมพ์หมายเลขพอร์ต 1433 คลิกถัดไป
  • ในกล่องโต้ตอบการกระทำเลือกอนุญาตการเชื่อมต่อแล้วคลิกถัดไป
  • ในกล่องโต้ตอบ 'โปรไฟล์' ให้ตรวจสอบโดเมนส่วนตัวและสาธารณะแล้วคลิกถัดไป
  • ในกล่องโต้ตอบ 'ชื่อ' ให้พิมพ์ 'SQL 1433 Port' และสำหรับคำอธิบายเขียนคำอธิบายของตนเอง จากนั้นคลิกเสร็จสิ้น
  1. จากนั้นในแท็บตรงกลางคลิกสองครั้งที่รายการที่พบ (อินสแตนซ์) หรือรายการที่สร้างขึ้นของชื่อ 'SQL 1433 Port' โดยคุณ
  2. เลือกแท็บ 'ขอบเขต' ในกล่องโต้ตอบที่เปิดอยู่ (คุณสมบัติเซิร์ฟเวอร์ SQL)
  3. ใน Local PC ไปที่ google.com ในเบราว์เซอร์ของคุณและค้นหา 'My IP'
  4. จากนั้นคัดลอก 'IP' ของคุณ
  5. ไปที่เซิร์ฟเวอร์ระยะไกลและในกล่องโต้ตอบ 'คุณสมบัติเซิร์ฟเวอร์ SQL' ของแท็บ 'ขอบเขต' ใน 'ที่อยู่ IP ระยะไกล' เลือกตัวเลือก 'ที่อยู่ IP เหล่านี้' และคลิกปุ่ม 'เพิ่ม'
  6. ในกล่องโต้ตอบที่เปิดอยู่ (ที่อยู่ IP) เลือกตัวเลือก 'ที่อยู่ IP หรือซับเน็ตนี้' แล้ววาง 'IP' ของคุณคลิกปุ่มตกลง

7

วิธีนี้แก้ไขปัญหาทั้งสอง network errorและserviceเซิร์ฟเวอร์ SQL ที่อยู่เบื้องหลัง

ฉันตอบคำถามที่คล้ายกันที่นี่คุณต้อง stat อื่น ๆopen Run type-> services.msc- ภายใต้การบริการ -> sort by stoppedคุณจะเห็นกลุ่มของ SQL หยุดบริการRight click and start

ในการเริ่มต้น - มี 4 ประเด็นที่อาจจะก่อให้เกิดความร่วมกันข้อผิดพลาดการเชื่อมต่อ LocalDb SQLEXPRESS โปรแกรม Sql Server SQL Network Interfaces, error: 50 - Local Database Runtime error occurredก่อนที่คุณจะเริ่มต้นที่คุณจำเป็นต้องเปลี่ยนชื่อหรือ v11 v12 จะ (localdb) \ mssqllocaldb


Troubleshooting Steps
  1. คุณไม่ได้มีบริการที่เรียกใช้ เรียกใช้คำสั่งนี้ , net start MSSQLSERVERหรือnet start MSSQL$ instancename
  2. คุณไม่มีพอร์ตไฟร์วอลล์ ที่ กำหนดค่าไว้ ที่นี่ป้อนคำอธิบายรูปภาพที่นี่
  3. การติดตั้งของคุณมีปัญหาและ / เสียหาย (ขั้นตอนด้านล่างนี้ช่วยให้คุณเริ่มต้นได้อย่างดี)
  4. คุณไม่ได้เปลี่ยนชื่อ V11 หรือ 12 เป็น mssqllocaldb / SqlServer

ฉันพบว่าสิ่งที่ง่ายที่สุดคือทำด้านล่าง - ฉันแนบรูปและขั้นตอนเพื่อขอความช่วยเหลือ


Resolution Steps:

ก่อนอื่นให้ตรวจสอบอินสแตนซ์ที่คุณติดตั้งคุณสามารถทำได้โดยตรวจสอบรีจิสทรี และ เรียกใช้คำสั่ง

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" หากขั้นตอนนี้ล้มเหลวคุณสามารถลบด้วยตัวเลือกdcmd> Sqllocaldb.exe d "someDb"
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png


5

ฉันกำลังประสบปัญหาเดียวกันและปัญหาก็คือว่าฉันได้ทำหลายโครงการในโซลูชัน ( WebและDroid) และถึงแม้ว่าจะDefault projectได้รับเลือกในการPackage Manager Consoleใช้สตริงการเชื่อมต่อจากDroidโครงการ:

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
<!-- BAD TARGET DATABASE -->
Target database is: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   [REMOVED TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

หลังจากการตั้งค่าStartup ProjectไปWebและDefault ProjectในPackage Manger Consoleผมได้รับมันในการทำงาน


5

ฉันต้องใช้เบราว์เซอร์ของ SQL ServerบริการลงในSQL Server Configuration Manager การติดตั้งไม่สามารถค้นพบบริการที่สร้างขึ้นใหม่หากไม่มีสิ่งนี้


1
ฉันยังไม่ได้อยู่ที่นั่น แต่ฉันใกล้เข้ามามากขึ้น ใน Visual Studio หลังจากทำเช่นนี้จะยกเลิกการเชื่อมต่อและเชื่อมต่อใหม่รับข้อผิดพลาดเดิม แต่ตอนนี้อย่างน้อยจาก VS2015 ฉันไม่สามารถสร้างตารางได้และฐานข้อมูลที่ฉันสร้างตะเข็บให้ทำงานทันที (ea, ไม่มีไอคอนกากบาทสีเข้มเหนือพวกเขา)
user3800527

1
หมายเหตุหลังจากคำสั่งของคุณสิ่งนี้ส่งผลให้ชื่อเซิร์ฟเวอร์บนเครื่องท้องถิ่นเริ่ม> เรียกใช้> cmd> sqlcmd -L
user3800527

4

ในขณะที่การแก้ปัญหาข้างต้นควรทำงานใน 90% ของกรณี แต่ถ้าคุณยังคงอ่านคำตอบนี้ !!! คุณอาจพยายามเชื่อมต่อกับเซิร์ฟเวอร์ที่แตกต่างจากที่ตั้งใจไว้ อาจเป็นเพราะไฟล์กำหนดค่าที่ชี้ไปยังเซิร์ฟเวอร์ SQL ที่แตกต่างจากเซิร์ฟเวอร์จริงที่คุณคิดว่าคุณกำลังพยายามเชื่อมต่อ

เกิดขึ้นกับฉันอย่างน้อย


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

4

ฉันย้ายจากแล็ปท็อปที่ทำงานบน Windows 7 ไปเป็นแล็ปท็อปที่ทำงานบน Windows 10 ฉันใช้ SSMS2016 บน Windows 7 ได้สำเร็จ

ปัญหาเดียวกันนี้ใช้โดยใช้ SSMS2012 หรือ SSMS2016 การเข้าถึงเซิร์ฟเวอร์ 10 sql โดยใช้การตรวจสอบ windows ยังคงเหมือนเดิม ฉันสามารถทดสอบสิ่งนี้จากเซิร์ฟเวอร์อื่น อย่างไรก็ตามที่ 2 ของ 10 เซิร์ฟเวอร์จะไม่เชื่อมต่อจากแล็ปท็อปของฉัน ทั้งคู่เป็น ms sql server 9 แต่ฉันสามารถเชื่อมต่อกับฐานข้อมูล sql server 9 อื่น ๆ ได้

วิธีแก้ไขคือเพิ่มกฎไฟร์วอลล์ (โดยใช้ Windows Firewall พร้อม Advanced Security)

สร้างกฎขาเข้าสำหรับแต่ละ SSMS เช่น SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe C: \ Program Files (x86) \ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe

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


ข้อผิดพลาดเกี่ยวกับ msg (กฎไฟร์วอลล์ล่วงหน้า) "มีข้อผิดพลาดเกี่ยวกับเครือข่ายหรืออินสแตนซ์เฉพาะเกิดขึ้นขณะสร้างการเชื่อมต่อกับ SQL Server ไม่พบเซิร์ฟเวอร์หรือไม่สามารถเข้าถึงได้ตรวจสอบว่าชื่ออินสแตนซ์ถูกต้อง อนุญาตการเชื่อมต่อระยะไกล (ผู้ให้บริการ: อินเทอร์เฟซเครือข่าย SQL ข้อผิดพลาด: 26 - ข้อผิดพลาดการค้นหาเซิร์ฟเวอร์ / อินสแตนซ์ที่ระบุ) (. Net SqlClient Data Provider) "


4

ทำไมข้อผิดพลาดนี้จึงน่าเบื่อและมีเสียงดังเพียงเพราะมันสามารถเกิดขึ้นได้ในสถานการณ์ที่หลากหลาย

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

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

ทางออกของปัญหาของฉัน:

  • ตรวจสอบฟังก์ชัน sqlconnection ของฉัน

  • คลิกเพื่อดูการกำหนดค่า

  • ใหม่การเชื่อมต่อ

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

  • เลือกชื่อเซิร์ฟเวอร์ของคุณ

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

มันใช้งานได้สำหรับฉันด้วยการไตร่ตรองว่าเกิดอะไรขึ้นในกระบวนการเชื่อมต่อความหวังของฉันจะนำคุณไปสู่การฆ่าความผิดพลาดของคุณ


สิ่งนี้ช่วยให้ฉันพบว่าฉันต้องลบหมายเลขพอร์ตสำหรับสตริงการเชื่อมต่อ LocalDB เมื่อใช้ Entity Framework
ryanwebjackson

4

ฉันลองคำตอบอื่น ๆ ทั้งหมดเกี่ยวกับคำถามนี้และบางส่วนถ้าไม่ใช่ทั้งหมดอาจมีส่วนร่วมในการทำให้การทำงานนี้สำหรับฉัน แต่ฉันยังคงไม่สามารถเชื่อมต่อกับ DB จากระยะไกลได้ ฉันใช้ SQL Server กับ Azure VM

ในที่สุดฉันจำได้ว่า VM มีปลายทางที่ควบคุมโดยพร็อกซีบัญชี Azure ดังนั้นฉันจึงไปที่ Azure Portal และเพิ่ม 1433 เป็นจุดสิ้นสุดที่มีอยู่และฉันสามารถเชื่อมต่อกับอินสแตนซ์ SQL ของฉันได้

หวังว่านี่จะช่วยให้คนที่ลองทำคำตอบทั้งหมดและยังไม่มีโชค!


4

สรุป

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

รายละเอียด

ฉันพบปัญหานี้เมื่อเร็ว ๆ นี้เมื่อเปลี่ยนจาก Windows 7 เป็นแล็ปท็อป Windows 10 ฉันใช้การพัฒนาท้องถิ่นและสภาพแวดล้อมรันไทม์เข้าถึงฐานข้อมูล Dev ของเราบนเซิร์ฟเวอร์ระยะไกล เราเข้าถึงฐานข้อมูล Dev ผ่านการตั้งค่านามแฝงของเซิร์ฟเวอร์ผ่านทาง SQL Server Client Network Utility (cliconfg.exe) หลังจากยืนยันว่านามแฝงถูกตั้งค่าอย่างถูกต้องทั้งในยูทิลิตี้รุ่น 64 และ 32 บิตและเซิร์ฟเวอร์ฐานข้อมูลสามารถเข้าถึงได้จากแล็ปท็อปใหม่ผ่าน SSMS ฉันยังคงพบข้อผิดพลาดจาก OP (ไม่ใช่ที่อยู่ IP ของ OP ของ หลักสูตร)

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

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


4

คุณสามารถตรวจสอบสถานะบริการของ MS SQL Server 2014 ได้ใน Windows 7 คุณสามารถทำได้โดย:

  1. ไปที่ค้นหาและพิมพ์ "ตัวจัดการการกำหนดค่า SQL Server 2014
  2. จากนั้นคลิกที่ "บริการเซิร์ฟเวอร์ SQL" บนเมนูด้านซ้าย
  3. ตรวจสอบอินสแตนซ์ของสถานะบริการ SQL Server ถ้ามันหยุดหรือทำงาน
  4. ถ้ามันหยุดโปรดเปลี่ยนสถานะการทำงานและเข้าสู่ SQL Server Management Studio 2014

3

ปัญหาของฉันเริ่มต้นเมื่อฉันพยายามเปลี่ยนเซิร์ฟเวอร์จากIIS Expressเป็นLocal IIS (ในขณะที่ใช้LocalDB )

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

ฉันใช้ LocalDB (เพื่อจุดประสงค์ด้านการพัฒนา) และเมื่อฉันเปลี่ยนจาก Local IIS เป็น IIS Express Visual Studio ได้เปลี่ยนแหล่งข้อมูลของฉันจากData Source = (LocalDb) \ MSSQLLocalDBเป็นแหล่งข้อมูล =. \ SQLEXPRESS

สตริงการเชื่อมต่อไม่ถูกต้อง

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

แก้ไขสตริงการเชื่อมต่อ

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" />

หวังว่านี่จะช่วยให้ใครบางคนที่นั่น


นอกจากนี้อย่าทำผิดพลาดโง่ ๆ ของการใช้ / แทน \ ในสายอักขระการเชื่อมต่อ
andrew pate

3

นอกเหนือจากการพยายามทำทุกอย่างตามที่ Teo Chuen Wei Bryan แนะนำให้ตรวจสอบให้แน่ใจว่าคุณอ้างถึงชื่อเซิร์ฟเวอร์ / อินสแตนซ์ที่ถูกต้องในสตริงการเชื่อมต่อ

หากคุณใช้ชื่อโฮสต์ / อินสแตนซ์แบบย่อบนเซิร์ฟเวอร์ฐานข้อมูลหรือในไฟล์ web.config ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อโดเมนแบบเต็ม (FQDN) / อินสแตนซ์

นอกจากนี้เพื่อทดสอบการเชื่อมต่อจากเซิร์ฟเวอร์ที่ไม่มีไคลเอนต์เซิร์ฟเวอร์ SQL

-> สร้างไฟล์ข้อความและเปลี่ยนนามสกุลไฟล์เป็น.udl

-> คลิกขวาที่ไฟล์และคุณจะเห็นแท็บการเชื่อมต่อ

-> ชื่อเซิร์ฟเวอร์อินพุตและเข้าสู่ระบบข้อมูลเพื่อทดสอบการเชื่อมต่อกับเซิร์ฟเวอร์ฐานข้อมูล

หวังว่านี่จะช่วยได้


3

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

  1. เริ่มบริการเซิร์ฟเวอร์ sql
  2. เริ่มบริการ (พูด IIS) ที่กำลังเรียกใช้เซิร์ฟเวอร์ sql (ปัญหาน่าจะอยู่ที่นี่ถ้าเวลาระหว่างการเริ่มต้นการเรียกใช้บริการไปยังเซิร์ฟเวอร์ SQL และเวลาที่คุณได้รับข้อผิดพลาดในการตอบสนองนั้นสั้นมาก (ประมาณหนึ่งหรือสองวินาที)
  3. รีสตาร์ทเซิร์ฟเวอร์ sql server ที่เปิดอยู่
  4. รีสตาร์ทเซิร์ฟเวอร์ที่เปิดบริการอยู่

3

เมื่อฉันพบข้อผิดพลาดนี้ใน Visual Studio

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

... มันเป็นช่วงการทำงานของรหัส C # ต่อไปนี้ซึ่งพยายามรับข้อมูล SQL Server ของฉันเพื่อแสดงในตาราง การแบ่งเกิดขึ้นตรงกับบรรทัดที่ระบุว่า connect.Open ():

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

มันอธิบายไม่ได้เพราะการสืบค้น SQL นั้นง่ายมากฉันมีสตริงการเชื่อมต่อที่ถูกต้องและเซิร์ฟเวอร์ฐานข้อมูลก็พร้อมใช้งาน ฉันตัดสินใจที่จะเรียกใช้แบบสอบถาม SQL ที่เกิดขึ้นจริงด้วยตนเองใน SQL Management Studio และมันก็ทำงานได้ดีและให้ผลหลายระเบียน แต่สิ่งหนึ่งที่โดดเด่นในผลการสืบค้น: มีข้อความ HTML ที่เข้ารหัสไม่ถูกต้องบางอย่างในเขตข้อมูลประเภท varchar (สูงสุด) ภายในตารางเพื่อน (โดยเฉพาะสัญลักษณ์ความคิดเห็นที่เข้ารหัสแล้วบางส่วนของการเรียงลำดับที่<!--อยู่ในข้อมูลคอลัมน์ "บรรยาย" แถวข้อมูลผู้ต้องสงสัยมีลักษณะดังนี้:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

สังเกตสัญลักษณ์ HTML ที่เข้ารหัส " &lt;" ซึ่งย่อมาจากอักขระ "<" ยังไงก็เถอะมันเข้าไปในฐานข้อมูลและรหัส C # ของฉันไม่สามารถรับมันได้! มันล้มเหลวทุกครั้งที่สาย connect.Open ()! หลังจากฉันแก้ไขด้วยตนเองว่าข้อมูลแถวหนึ่งในตารางฐานข้อมูลเพื่อนและใส่อักขระ "<" ที่ถอดรหัสแล้วแทนทุกอย่างทำงานได้! นี่คือสิ่งที่แถวนั้นควรมีลักษณะ:

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

ฉันแก้ไขแถวที่ไม่ดีหนึ่งแถวโดยใช้คำสั่ง UPDATE แบบง่ายด้านล่างนี้ แต่ถ้าคุณมีหลายแถวของ HTML ที่เข้ารหัสคุณอาจต้องใช้คำสั่ง UPDATE ที่ซับซ้อนยิ่งขึ้นซึ่งใช้ฟังก์ชัน REPLACE:

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

ดังนั้นคุณธรรมของเรื่องคือ (อย่างน้อยในกรณีของฉัน), sanitize เนื้อหา HTML ของคุณก่อนที่จะเก็บไว้ในฐานข้อมูลและคุณจะไม่ได้รับข้อผิดพลาด SQL Server นี้เป็นความลับในตอนแรก! (เอ่อการฆ่าเชื้อ / ถอดรหัสเนื้อหา HTML ของคุณอย่างถูกต้องเป็นหัวข้อของการสนทนาอื่นที่ควรค่าแก่การค้นหา StackOverflow แยกต่างหากหากคุณต้องการข้อมูลเพิ่มเติม!)


3

ลองเพิ่ม a ,และหมายเลขพอร์ต (ตาม,1433) เข้ากับท้ายสตริงการเชื่อมต่อของคุณ


3

การจัดการแท็ก Xml ใน Web.config เป็นสิ่งสำคัญ

เป็นครั้งแรก

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

หลังจาก

<connectionStrings>
  <add name="SqlConnectionString" connectionString="Data Source=.; Initial Catalog=TestDB; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

3

ในสถานการณ์ของฉันบริการ MSSQLSERVER มีปัญหาฉันจึงเริ่มบริการใหม่และแก้ไขปัญหาได้

ดังนั้นฉันแนะนำให้ไปที่แอพ Services โดย: คีย์ Windows, ค้นหา"Services" , จากนั้นหาอินสแตนซ์ Sql ของคุณมักจะ"SQL Server (MSSQLSERVER)"ที่สำหรับ Microsoft sql server คลิกขวาที่บริการและคลิกที่เริ่มถ้าปิดใช้งานคลิกที่รีสตาร์ท


2

ข้อผิดพลาดนี้เกิดขึ้นเมื่ออินสแตนซ์ของ SQL Server stoppedของคุณ

ไปที่โปรแกรมทั้งหมด> SQL Server> เครื่องมือกำหนดค่า> SQL Server CONFIGURATION MANAGER

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

คำตอบนี้ช้ามาก (แต่ช้ากว่าดีกว่าไม่เคย)


2

ฉันแก้ไขปัญหานี้โดยการตั้งค่าโครงการที่ใช้ Entity Framework เป็นโครงการเริ่มต้นแล้วเรียกใช้คำสั่ง "update-database"

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