การหมดเวลาของเซิร์ฟเวอร์ SQL ในความพยายามครั้งแรก


9

ฉันมีปัญหาแปลก ๆ ที่ฉันพยายามแนบกับ SQL Server 2008 ที่ทำงานบนคอมพิวเตอร์เครื่องที่สอง (ทั้งสองเครื่องที่ใช้ Win7 64- บิต) ไม่ว่าจะเป็นจากแหล่งข้อมูลใน Visual Studio หรือผ่านคอนโซลการจัดการ SQL เอง

ในครั้งแรกที่พยายามเชื่อมต่อหมดเวลา ความพยายามครั้งที่สองทำงานได้ดี

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

ฉันหวังว่ามันสมเหตุสมผล

คำแนะนำใด ๆ?


คุณใช้วิธีการตั้งชื่อแบบใดเพื่อเชื่อมต่อกับเครื่องอื่นคุณใช้ที่อยู่ IP (เช่น 192.168.1.1) หรือชื่อเช่น: MySqlServer ฉันสงสัยว่านี่เป็นปัญหาการแก้ปัญหาชื่อคุณสามารถยืนยันได้โดยใส่ชื่อเซิร์ฟเวอร์ SQL ในไฟล์โฮสต์ของคุณในกรณีนี้ปัญหาจะหายไป
เข้ารหัส Gorilla

ตามชื่อเครื่อง แต่มันอยู่ในเครือข่ายในบ้านของฉันและฉันสามารถกดแชร์ได้โดยใช้ชื่อเครื่อง มันเป็นแค่ SQL ที่ทำให้ฉันมีปัญหา
SergioL

คำตอบ:


6

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

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

ที่นี่คุณเห็นสองตัวเลือก:

  • พอร์ต TCP แบบไดนามิก: 51250 (สร้างแบบสุ่ม)
  • พอร์ต TCP: ว่างเปล่า - ฉันใส่ที่นี่ 1433 จากนั้นฉันเปิดไฟร์วอลล์ (ในกรณีที่ยังไม่ได้เปิด) คุณสามารถใส่พอร์ตใดก็ได้ที่คุณต้องการ (ฉันใส่ 1433 เพราะมันเป็นเพียงอินสแตนซ์เดียวในกรณีที่มีหลายอินสแตนซ์คุณควรเลือกพอร์ตที่แตกต่างกันสำหรับแต่ละอินสแตนซ์แล้วเปิดในไฟร์วอลล์)

สคริปต์ที่ใช้เพื่อให้ง่ายต่อการเปิดพอร์ตต่าง ๆ ที่ฉันดาวน์โหลดจาก MS และฉันกำลังทำซ้ำที่นี่ (ความคิดเห็นเป็นภาษาเยอรมัน แต่ควรจะชัดเจน):

@echo =========  Ports des SQL-Servers  ===================
@echo Aktivieren von Port 1433 für die SQLServer-Standardinstanz
netsh firewall set portopening TCP 1433 "SQLServer" 
@echo Aktivieren von Port 1434 für dedizierte Administratorverbindungen
netsh firewall set portopening TCP 1434 "SQL-Administratorverbindung" 
@echo Aktivieren von Port 4022 für den konventionellen SQL Server-Service Broker  
netsh firewall set portopening TCP 4022 "SQL-Service Broker" 
@echo Aktivieren von Port 135 für Transact-SQL-Debugger/RPC 
netsh firewall set portopening TCP 135 "SQL-Debugger/RPC" 
@echo =========  Ports für Analysedienste  ==============
@echo Aktivieren von Port 2383 für die SSAS-Standardinstanz
netsh firewall set portopening TCP 2383 "Analysedienste" 
@echo Aktivieren von Port 2382 für den SQL Server-Browserdienst
netsh firewall set portopening TCP 2382 "SQL-Browser" 
@echo =========  Verschiedene Anwendungen  ==============
@echo Aktivieren von Port 80 für HTTP 
netsh firewall set portopening TCP 80 "HTTP" 
@echo Aktivieren von Port 443 für SSL
netsh firewall set portopening TCP 443 "SSL" 
@echo Aktivieren des Ports für die Schaltfläche 'Durchsuchen' des SQL Server-Browserdiensts
netsh firewall set portopening UDP 1434 "SQL-Browser" 
@echo Zulassen von Multicast-/Broadcastantwort auf UDP (Aufzählung der Browserdienste OK)
netsh firewall set multicastbroadcastresponse ENABLE

2

สิ่งที่ดีที่สุดที่ฉันคาดเดาได้คือคุณเปิดAUTO_CLOSEไว้สำหรับฐานข้อมูล ซึ่งหมายความว่าฐานข้อมูลจำเป็นต้องหมุนขึ้นเมื่อคุณเชื่อมต่อซึ่งเป็นสิ่งที่ทำให้เกิดการหมดเวลาของ inital

การเดาที่สองคืออาจเกี่ยวข้องกับการแก้ไขชื่อโฮสต์ ดังนั้นจึงใช้เวลานานเกินไปในการแก้ไขชื่อโฮสต์ในครั้งแรก (โดยอาจออกอากาศหรือไม่) แต่จากนั้นจะถูกแคชในการพยายามเชื่อมต่อในภายหลัง คุณใช้อะไรในการแก้ปัญหาโฮสต์? มันอยู่ใน DNS? ลองเปลี่ยนสตริงการเชื่อมต่อเป็น IP รูปแบบพอร์ต เช่น 192.168.100.100,1433

นอกจากนี้คุณยังสามารถลองเรียกใช้ipconfig /flushdnsหลังจากพยายามเชื่อมต่อสำเร็จ & ดูว่าคุณมีพฤติกรรมเดียวกันหรือไม่ วิธีแก้ปัญหาหลบซึ่งจะทำให้การค้นหาในไฟล์โฮสต์ของคุณ แต่คุณควรแก้ไขได้อย่างถูกต้อง


ตั้งค่าเป็นปิด (0) ในฐานข้อมูลทั้งหมดแล้ว อย่างไรก็ตามมันไม่ได้เป็นเพียงความพยายามครั้งแรกจากไคลเอนต์มันเป็นความพยายามครั้งแรกสำหรับแต่ละแอปที่ทำงานบนไคลเอนต์ (ดังนั้นความพยายามครั้งที่สองสำหรับการเชื่อมต่อ SQL Studio ในขณะที่ทำงานอยู่ฉันหมุน VS2010 มันล้มเหลว แม้ว่าสตูดิโอจะเชื่อมต่อแล้วและทำงานอยู่)
SergioL

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

2

รู้สึกเหมือนถูกยิงเป็นเวลานานในที่มืดซึ่งปิดตา แต่มันอาจช่วยได้ มีกระทู้เก่า ๆ ที่ฟอรัม Microsoft SQL Developer ซึ่งอธิบายว่าอะไรที่เป็นปัญหาเดียวกันพร้อมกับการแก้ไขที่เป็นไปได้ เซิร์ฟเวอร์ของเขาใช้ Windows Server 2008 แต่อาจเกี่ยวข้องกับการตั้งค่า Win7 ของคุณด้วย

ด้าย:

http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/58bd9c4d-0572-4567-8e32-82a7fd600022

จากกระทู้:

ใช่ฉันได้แก้ไขปัญหานี้แล้ว

windows server 2008 ของฉันถูกกำหนดค่าให้ปฏิเสธการผูก SASL LDAP (ดูคำเตือน 2886)

เนื่องจากฉันได้กำหนดค่าเซิร์ฟเวอร์ของฉันให้ไม่ปฏิเสธการเชื่อมต่อดังกล่าวการเชื่อมต่อ sql server 2008 จึงทำงานได้อย่างถูกต้อง

คุณสามารถดู Microsoft KB 935834 สำหรับข้อมูลเกี่ยวกับการปรับเปลี่ยนการตั้งค่าการลงชื่อ LDAP (ไม่สามารถเชื่อมโยงได้เนื่องจากฉันเป็นผู้ใช้ใหม่)

หวังว่ามันจะช่วย!


0

ปิดการใช้งานไฟร์วอลล์ ทดสอบเครือข่าย (ping) ลดทราฟฟิกเครือข่ายไปยังเซิร์ฟเวอร์ sql (ใช้wireshark )


0

คุณสามารถลองใช้ SQL Profiler ก่อนที่จะเชื่อมต่อเป็นครั้งแรกด้วย VS หรือ SSMS และดูว่าเกิดอะไรขึ้นบน SQL Server

นอกจากนี้คุณได้ตรวจสอบบันทึกเหตุการณ์เพื่อดูว่ามีการบันทึกอะไรหรือไม่

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