Select the product you need help with
คำอธิบายเกี่ยวกับการตั้งค่า TCP/IP ที่คุณอาจต้องการปรับปรุงเมื่อมีการเชื่อมต่อ SQL Server ถูกปิดใช้งานหมายเลขบทความ (Article ID): 328476 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้ เนื้อหาบนหน้านี้สรุปเมื่อคุณใช้โปรแกรมควบคุม ODBC ของ SQL Server, SQL Server OLE DB ผู้ให้บริการ หรือผู้ให้บริการได้รับการจัดการ System.Data.SqlClient คุณสามารถปิดใช้งานการเชื่อมต่อร่วมกัน โดยใช้อินเตอร์เฟสแอพลิเคชันที่เกี่ยวข้องเขียนโปรแกรม (Api) เมื่อคุณปิดใช้งานร่วมกัน ปัญหาในไลบรารีเครือข่ายของเซิร์ฟเวอร์ SQL ต้นแบบที่อาจเพิ่มขึ้นถ้าโปรแกรมประยุกต์ของคุณบ่อย ๆ เปิด และปิดการเชื่อมต่อ บทความนี้อธิบายการตั้งค่า TCP/IP บางอย่างที่คุณอาจต้องการปรับปรุงภายใต้เงื่อนไขเหล่านี้ ข้อมูลเพิ่มเติมปิดร่วมกันอาจทำให้โปรแกรมควบคุมเครือข่ายของ sql SERVER ที่อยู่ภายใต้เพื่อเปิด และปิดการเชื่อมต่อซ็อกเก็ตใหม่ไปยังคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server รวดเร็ว คุณอาจต้องเปลี่ยนการตั้งค่าซ็อกเก็ต TCP/IP ค่าเริ่มต้นสำหรับระบบปฏิบัติการและคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server เพื่อจัดการกับปัญหาระดับสูงกว่า โปรดสังเกตว่า บทความนี้อธิบายการตั้งค่าที่มีผลต่อไลบรารีเครือข่ายของ SQL Server เมื่อคุณใช้โพรโทคอล TCP/IP เท่านั้น การปิดการร่วมกันทำให้เกิดปัญหาที่เกี่ยวข้องกับปัญหากับโพรโทคอล SQL Server อื่นเช่นไปป์ที่มีชื่อ แต่บทความนี้ไม่ได้กล่าวถึงหัวข้อนี้ บทความนี้มีไว้สำหรับผู้ใช้ขั้นสูงเท่านั้น ถ้าคุณไม่เข้าใจหัวข้อในบทความนี้ Microsoft แนะนำว่า คุณได้เห็นหนังสือดีเกี่ยวกับซ็อกเก็ต TCP/IP โปรดสังเกตว่า Microsoft ขอแนะนำให้ คุณเสมอใช้ร่วมกันกับไดรเวอร์ของ sql SERVER เท่านั้น การใช้ร่วมกันได้อย่างมากช่วยปรับปรุงประสิทธิภาพโดยรวมทั้งฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ SQL เมื่อคุณใช้ไดรเวอร์ของ SQL Server ใช้ร่วมกัน.นอกจากนี้ช่วยลดปริมาณการใช้งานเครือข่ายไปยังคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server ตัวอย่างเช่น การทดสอบตัวอย่างที่ใช้ 20000 SQL Server การเชื่อมต่อเปิด และปิด ด้วยการใช้การเปิดใช้งานร่วม ใช้แพ็คเกจเครือข่าย TCP/IP ประมาณ 160 สำหรับผลรวมของกิจกรรมของเครือข่าย 23,520 ไบต์ ด้วยการร่วมกันถูกปิดใช้งาน การทดสอบตัวอย่างเดียวกันสร้าง 225,129 TCP/IP แพ็คเกจเครือข่าย สำหรับผลรวมของกิจกรรมของเครือข่าย 27,209,622 ไบต์ โปรดสังเกตว่า เมื่อคุณเห็นปัญหาซ็อกเก็ต TCP/IP ที่เกี่ยวข้องกับปัญหากับไลบรารีเครือข่ายของ sql SERVER คุณอาจได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้อย่างน้อยหนึ่งอย่างเมื่อคุณพยายามเชื่อมต่อกับคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server: ไม่มีเซิร์ฟเวอร์ SQL หรือการเข้าถึงถูกปฏิเสธ หมดเวลาหมดอายุแล้ว ข้อผิดพลาดของเครือข่ายทั่วไป ผู้ให้บริการ TCP: ใช้เพียงหนึ่งของแต่ละที่อยู่ซ็อกเก็ต (โพรโทคอล/อยู่/พอร์ตเครือข่าย) โดยปกติแล้วจะอนุญาต สองหลักที่เกี่ยวข้องกับปัญหาปัญหาปกติจะเกิดขึ้นเมื่อคุณปิดใช้งานร่วมกันในขณะที่คุณใช้โพรโทคอล TCP/IP ของเซิร์ฟเวอร์ SQL: คุณอาจไม่เพียงพอพอร์ตแบบไม่ระบุชื่อบนคอมพิวเตอร์ไคลเอนต์ หรือคุณอาจเกินWinsockListenBacklogเริ่มต้นการตั้งค่าบนคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพอร์ตแบบไม่ระบุชื่อ คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft: 319502
(http://support.microsoft.com/kb/319502/EN-US/
)
PRB: 'WSAEADDRESSINUSE' ข้อผิดพลาดเมื่อคุณพยายามที่เชื่อมต่อผ่านพอร์ตที่มีแบบไม่ระบุชื่อหลังจากที่คุณเพิ่มขีดจำกัดการเชื่อมต่อ IMAPปรับการตั้งค่า MaxUserPort และ TcpTimedWaitDelayโปรดสังเกตว่าการตั้งค่าMaxUserPortและTcpTimedWaitDelayใช้ได้เฉพาะสำหรับคอมพิวเตอร์ไคลเอนต์ที่รวดเร็วเปิด และปิดการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลที่กำลังเรียกใช้ SQL Server และที่ กำลังใช้การเชื่อมต่อร่วมกัน ตัวอย่างเช่น การตั้งค่าเหล่านี้จะสามารถใช้ได้บนเซิร์ฟเวอร์ Internet Information Services (IIS) ที่กำลังให้บริการการร้องขอ HTTP ขาเข้าเป็นจำนวนมาก และที่มีการเปิด และปิดการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลที่กำลังเรียกใช้ SQL Server และที่ใช้โพรโทคอล TCP/IP ที่ใช้ร่วมกันถูกปิดใช้งาน หากร่วมกันถูกเปิดใช้งาน คุณไม่ต้องปรับการตั้งค่าMaxUserPortและTcpTimedWaitDelayเมื่อคุณใช้โพรโทคอล TCP/IP เพื่อเปิดการเชื่อมต่อกับคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server ไลบรารีเครือข่ายของ SQL Server อยู่ภายใต้เปิดซ็อกเก็ต TCP/IP ไปยังคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server เมื่อเปิดซ็อกเก็ตนี้ ไลบรารีเครือข่ายของ SQL Server เปิดใช้ตัวเลือกการซ็อกเก็ต TCP/IP SO_REUSEADDR สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าของซ็อกเก็ตSO_REUSEADDRดูหัวข้อ "รู้จัก" ในเครือข่ายสำหรับนักพัฒนา Microsoft (MSDN) โปรดสังเกตว่า ไลบรารีเครือข่ายของ SQL Server โดยเฉพาะอย่างยิ่งไม่เปิดใช้งานตัวเลือกของซ็อกเก็ตSO_REUSEADDR TCP/IP สำหรับเหตุผลด้านความปลอดภัย เมื่อเปิดใช้งานSO_REUSEADDRผู้ใช้ที่เป็นอันตรายสามารถ hijack พอร์ตไคลเอนต์กับ SQL Server และใช้ข้อมูลประจำตัวที่ไคลเอนต์การเข้าถึงคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server โดยค่าเริ่มต้น เนื่องจากไลบรารีเครือข่ายของ SQL Server ไม่ได้เปิดใช้ตัวเลือกซ็อกเก็ตSO_REUSEADDRทุกครั้งที่คุณเปิด และปิดซ็อกเก็ตผ่านไลบรารีเครือข่ายของ SQL Server บนฝั่งไคลเอ็นต์ ซ็อกเก็ตใส่เป็นสถานะ TIME_WAIT สี่นาที ถ้าคุณไม่รวดเร็วเปิดและปิดการเชื่อมต่อ SQL Server ผ่าน TCP/IP ที่ใช้ร่วมกันถูกปิดใช้งาน คุณจะรวดเร็วเปิด และปิดซ็อกเก็ต TCP/IP กล่าว แต่ละการเชื่อมต่อ SQL Server มีซ็อกเก็ต TCP/IP หนึ่งสอง ถ้าคุณเปิด และปิดซ็อกเก็ต 4000 ในสี่นาทีรวดเร็ว คุณจะไปถึงค่าสูงสุดเริ่มต้นสำหรับพอร์ตแบบไม่ระบุชื่อของไคลเอนต์ และความพยายามในการเชื่อมต่อซ็อกเก็ตใหม่ล้มเหลวจนถึง ชุดที่มีอยู่ของซ็อกเก็ต TIME_WAIT หมดเวลา คุณอาจมีการเพิ่มการตั้งค่าMaxUserPortและTcpTimedWaitDelayที่กล่าวถึงใน Q319502 เมื่อคุณมีการเก็บพักการปิดใช้งาน บนฝั่งไคลเอ็นต์ การตั้งค่าสำหรับค่าเหล่านี้จะถูกกำหนด โดยจำนวนการเชื่อมต่อ SQL Server เปิดและปิดเกิดขึ้นในฝั่งไคลเอ็นต์ คุณสามารถตรวจสอบพอร์ตไคลเอนต์กี่อยู่ในสถานะ TIME_WAIT โดยใช้เครื่องมือเอาต์บนคอมพิวเตอร์ไคลเอนต์ รันเครื่องมือเอาต์ ด้วยค่าสถานะ-nดังนี้ และนับจำนวนของซ็อกเก็ตไคลเอนต์เมื่อต้องการที่อยู่ IP ของเซิร์ฟเวอร์ SQL ของคุณที่อยู่ในสถานะ TIME_WAIT ในตัวอย่างนี้ อยู่ IP ของคอมพิวเตอร์ระยะไกลที่กำลังเรียกใช้ SQL Server เป็น 10.10.10.20 อยู่ IP ของคอมพิวเตอร์ไคลเอนต์เป็น 10.10.10.10 และสามสร้างการเชื่อมต่อและการเชื่อมต่อที่สองจะอยู่ในสถานะ TIME_WAIT: โปรดสังเกตว่า หากคุณปรับการตั้งค่าMaxUserPortหรือTcpTimedWaitDelayคุณต้องรีสตาร์ Microsoft Windows สำหรับการตั้งค่าใหม่มีผลบังคับใช้ การตั้งค่าMaxUserPortและTcpTimedWaitDelayสำหรับคอมพิวเตอร์ไคลเอนต์ใด ๆ ที่มีการพูดคุยกับคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server ผ่านซ็อกเก็ต TCP/IP ได้ ตั้งค่าเหล่านี้ไม่มีผลใด ๆ ถ้าจะมีการตั้งค่าบนคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server นอกจากว่าคุณกำลังทำการเชื่อมต่อซ็อกเก็ต TCP/IP เฉพาะกับคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server หมายเหตุ หากคุณปรับการตั้งค่าMaxUserPortเราขอแนะนำว่า คุณจองพอร์ต 1434 สำหรับใช้ โดยบริการ SQL Server Browser (sqlbrowser.exe) สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำเช่นนี้ ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft: 812873
(http://support.microsoft.com/kb/812873/
)
วิธีการจองช่วงของพอร์ตข้อมูลแบบชั่วคราวบนคอมพิวเตอร์ที่กำลังเรียกใช้ Windows Server 2003 หรือ Windows 2000 Serverปรับการตั้งค่า WinsockListenBacklogสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่ารีจิสทรีเฉพาะของ SQL Server นี้ คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:154628 เมื่อไลบรารีเครือข่ายของ SQL Server ฟังบนซ็อกเก็ต TCP/IP ไลบรารีเครือข่ายของ SQL Server ใช้การฟังWinsock API พารามิเตอร์ตัวสองสำหรับการฟังAPI เป็นรายการคงค้างที่ได้รับอนุญาตสำหรับซ็อก รายการคงค้างนี้แสดงถึงความยาวสูงสุดของคิวของค้างอยู่รอการเชื่อมต่อสำหรับการฟัง เมื่อความยาวของคิวเกินความยาวสูงสุด ไลบรารีเครือข่ายของ SQL Server ไม่ยอมรับความพยายามเชื่อมต่อซ็อกเก็ต TCP/IP เพิ่มเติมทันที นอกจากนี้ ไลบรารีเครือข่ายของ SQL Server ส่งแพ็คเก็ต ACK + ตั้งค่าใหม่
(http://support.microsoft.com/kb/154628/EN-US/
)
INF: การล็อก SQL 17832 กับการร้องขอการเชื่อมต่อการ์ดหลายใช้ SQL Server 2000 เป็นค่าเริ่มต้นฟังการตั้งค่ารายการคงค้างของ 5 ซึ่งหมายความ ว่า คอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server ผ่านค่า 5 กับพารามิเตอร์ยอดคงค้างของการฟังWinsock API เมื่อ APIฟังตั้งเธรดฟังโพรโทคอล TCP/IP ในคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server คุณสามารถปรับเปลี่ยนคีย์รีจิสทรี WinsockListenBacklog เพื่อระบุค่าแตกต่างกันจะถูกส่งผ่านไปสำหรับพารามิเตอร์นี้ เริ่มต้นใน SQL Server 2005 ไลบรารีเครือข่ายผ่านค่าของ SOMAXCONN เป็นการตั้งค่ารายการคงค้างที่ฟังAPI SOMAXCONN ช่วยให้ผู้ให้บริการ Winsock เพื่อตั้งค่าค่าสูงสุดที่เหมาะสมสำหรับการตั้งค่านี้ ดังนั้น คีย์รีจิสทรี WinsockListenBacklog จะไม่ใช้ หรือจำเป็นต้องใช้ใน SQL Server 2005 รายการคงค้างตั้งค่าการทำงานเป็นดังนี้: สมมติว่าบริการตัวกำหนดกำลังฟังสำหรับการร้องขอการซ็อกเก็ต TCP/IP ขาเข้า ถ้าคุณตั้งค่าการตั้งค่ารายการคงค้าง 5 และกำลังอย่างต่อเนื่องการส่งกระแสข้อมูลในการร้องขอการเชื่อมต่อซ็อกเก็ตจำนวนมาก บริการอาจไม่สามารถตอบสนองต่อการร้องขอขาเข้าที่เร็วเท่าที่จะมาใน ณจุดนี้ ชั้นซ็อกเก็ต TCP/IP คิวคำขอขาเข้าในคิวรายการคงค้าง และบริการสามารถดึงการร้องขอการออกจากคิวนี้ และจัดการการร้องขอการเชื่อมต่อซ็อกเก็ตเข้ามาในภายหลัง หลังจากที่คิวกรอกข้อมูลอัพ ที่เลเยอร์ของซ็อกเก็ต TCP/IP ทันทีปฏิเสธคำร้องขอการซ็อกเก็ตที่เพิ่มเติมใด ๆ ที่มาใน โดยการส่งแพคเก็ตการ ACK + ตั้งค่าใหม่กลับไปยังไคลเอนต์ เพิ่มขนาดเพิ่มคิวรายการคงค้างร้องขอหมายเลขของการเชื่อมต่อซ็อกเก็ตที่เปิดค้างไว้ในเลเยอร์ของซ็อกเก็ต TCP/IP คิวก่อนที่จะปฏิเสธการร้องขอ โปรดสังเกตว่า การตั้งค่าWinsockListenBacklogเป็นข้อมูลเฉพาะกับ SQL Server SQL Server พยายามที่อ่านการตั้งค่ารีจิสทรีนี้เมื่อบริการ SQL Server จะเริ่มต้นครั้งแรก ถ้าไม่มีการตั้งค่า ไม่มีใช้ค่าเริ่มต้นที่ 5 ถ้าการตั้งค่ารีจิสทรีที่มีอยู่ SQL Server อ่านการตั้งค่า และใช้ค่าที่ให้มาเป็นการตั้งค่ารายการคงค้างเมื่อฟัง WinSock API เรียกว่าเป็นเธรดฟังซ็อกเก็ต TCP/IP จะถูกตั้งค่าภายใน SQL Server เมื่อต้องการกำหนดว่าถ้าคุณกำลังเรียกใช้เป็นปัญหานี้ คุณสามารถรันการสืบค้นกลับการตรวจสอบเครือข่ายบนไคลเอนต์หรือคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server และค้นหาที่ร้องขอการเชื่อมต่อซ็อกเก็ตที่จะถูกปฏิเสธทันที ด้วยการ ACK + รีเซ็ต ถ้าคุณตรวจสอบแพ็คเก็ต TCP/IP ในจอภาพของเครือข่าย คุณเห็นแพคเก็ตต่อไปนี้เมื่อเกิดปัญหานี้: โปรดสังเกตว่า คุณยังสามารถดูแพคเก็ต ACK + ตั้งค่าใหม่ที่คล้ายกัน ถ้าคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server ทำงานไม่ได้เลย หรือ ถ้าคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server ไม่ฟังโพรโทคอล TCP/IP ดังนั้นเห็นแพคเก็ต ACK + รีเซ็ตไม่ยืนยันที่แน่นอนว่า คุณกำลังมีปัญหานี้เท่านั้น ถ้าWinsockListenBacklogอยู่ในระดับต่ำเกินไป ความพยายามในการได้รับการเชื่อมต่อบางแพคเก็ตที่ยอมรับ และเชื่อมต่อได้รับแพคเก็ต ACK + ตั้งค่าใหม่ทันทีในกรอบเวลาเดียวกัน โปรดสังเกตว่า ในกรณีที่ยาก คุณอาจต้องปรับการตั้งค่านี้แม้ว่าร่วมกันถูกเปิดใช้งานบนคอมพิวเตอร์ไคลเอนต์ ตัวอย่างเช่น ถ้ามีการพูดคุยคอมพิวเตอร์ไคลเอนต์จำนวนมากไปยังคอมพิวเตอร์เครื่องเดียวที่กำลังเรียกใช้ SQL Server ความพยายามในการเชื่อมต่อขาเข้าพร้อมกันเป็นจำนวนมากอาจเกิดขึ้นตลอดเวลาเฉพาะแม้ว่าจะมีการเปิดใช้งานร่วมกัน หมายเหตุหากคุณปรับการตั้งค่าWinsockListenBacklogคุณไม่ต้องรีสตาร์ท Windows สำหรับการตั้งค่านี้มีผลบังคับใช้ เพียงแค่หยุด และเริ่มบริการ SQL Server สำหรับการตั้งค่าที่มีผลบังคับใช้ การตั้งค่ารีจิสทรีWinsockListenBacklogเป็นสำหรับคอมพิวเตอร์ที่กำลังเรียกใช้ SQL Server เท่านั้น ไม่มีผลใด ๆ บนคอมพิวเตอร์ไคลเอนต์ใด ๆ ที่มีการพูดคุยกับ SQL Server คุณสมบัติหมายเลขบทความ (Article ID): 328476 - รีวิวครั้งสุดท้าย: 30 ตุลาคม 2555 - Revision: 6.0 ใช้กับ
แปลโดยคอมพิวเตอร์ ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:328476
(http://support.microsoft.com/kb/328476/en-us/
)
| การแปลบทความ
|




กลับไปด้านบน








