คำอธิบายของการเชื่อมต่อไคลเอ็นต์เซิร์ฟเวอร์เสมือนของ SQL

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 273673 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้สรุปบางพื้นฐานเกี่ยวกับการเชื่อมต่อไคลเอ็นต์เซิร์ฟเวอร์เสมือนของ Microsoft SQL

ข้อมูลเพิ่มเติม

สิ่งสำคัญนี้ส่วน วิธี หรืองานประกอบด้วยขั้นตอนที่บอกวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีไม่ถูกต้อง ดังนั้น โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม ให้สำรองรีจิสทรีก่อนทำการปรับเปลี่ยน เพื่อที่คุณจะสามารถคืนค่ารีจิสทรีได้หากมีปัญหาเกิดขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่ารีจิสทรี โปรดคลิกที่หมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
322756วิธีการสำรองข้อมูลและคืนค่ารีจิสทรีใน Windows


ลักษณะการทำงานไคลเอ็นต์ของเซิร์ฟเวอร์เสมือนของ sql

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

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

ในระหว่างการ failover โปรแกรมประยุกต์ไคลเอ็นต์สูญเสียการเชื่อมต่อกับเซิร์ฟเวอร์ SQL Server และต้องการเชื่อมต่อใหม่ดำเนินต่อไป ถ้าการเชื่อมต่อไคลเอนต์กับเซิร์ฟเวอร์ stateless, (ตัวอย่างเช่น โปรแกรมประยุกต์ที่พัฒนาขึ้น โดยการใช้เซิร์ฟเวอร์ข้อมูลทางอินเทอร์เน็ตของ Microsoft [IIS จะ stateless) ไคลเอนต์ reconnects ไปยังเซิร์ฟเวอร์ และประมวลผลการดำเนินต่อ นอกจากไคลเอนต์และเซิร์ฟเวอร์มีสถานะพบโดยทั่วไป (ตัวอย่างเช่น เคอร์เซอร์ที่เปิด ตัวแปรเซสชัน ตัวแปรส่วนกลางของ Transact SQL หรือข้อมูลใน tempdb), failover ไม่โปร่งใสกับไคลเอ็นต์ ในกรณีเหล่านี้ คุณควรออกแอพลิเคชันไคลเอนต์ผู้ใช้การแจ้งให้ทราบว่า การเชื่อมต่อถูกใด สูญ หรือตั้งค่าใหม่ หรือมีโปรแกรมประยุกต์ reestablish การเชื่อมต่อกับเซิร์ฟเวอร์โดยอัตโนมัติ ธุรกรรมใด ๆ ที่ไม่ได้กำหนดให้เมื่อ failover เกิดขึ้นถูกยกเลิก

การสนทนาของวิธีที่ไคลเอนต์จัดการกับความล้มเหลวของเซิร์ฟเวอร์คือมาตรฐานใด ๆ ของ sql server ไคลเอ็นต์ประยุกต์ แม้แต่ไม่มีการใช้ clusters และเซิร์ฟเวอร์เสมือน กระบวนการตรวจสอบข้อผิดพลาดคล้ายองสำหรับโปรแกรมประยุกต์ฐานข้อมูลที่ไคลเอ็นต์สำหรับคลัสเตอร์ได้ เมื่อคลัสเตอร์เริ่มต้น failover โปรแกรมไคลเอนต์ได้รับข้อความแสดงข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล ข้อผิดพลาดที่พบขึ้นเมื่อสิ่งโปรแกรมสำหรับไคลเอ็นต์กำลังพยายามทำในขณะนั้น

ถ้ามีการล้มเหลวเซิร์ฟเวอร์ SQL Server ผ่าน โดยคลัสเตอร์ผู้ดูแลระบบไม่มีส่งแพคเก็ตการตั้งค่าใหม่ TCP ถ้ากระบวนการของ sql server ถูกยกเลิก โดยระบบปฏิบัติการ (โดย Kill.exe), แพคเก็ตการตั้งค่าใหม่จะถูกส่ง

ซึ่งอาจส่งผลต่อแอพลิเคชันไคลเอนต์ได้ถ้าแอพลิเคชันไม่ได้ระบุพารามิเตอร์แบบสอบถามหมดเวลาหรือแบบสอบถามหมดเวลาของศูนย์ (0)

ถ้าโปรแกรมประยุกต์ไม่สามารถมีค่าหมดเวลาของแบบสอบถามแล้ว เปิด การเชื่อมต่อจะถูกเหลือในสถานะ ESTABLISHED หลังจาก failover เกิดขึ้นข้อเท็จจริงว่า เปิดการเชื่อมต่อจะไม่ปิด และไม่มีแพคเก็ต TCP ที่เพิ่มเติมจะถูกส่งจากการเชื่อมต่อเหล่านั้นบ่งชี้ว่า การเชื่อมต่อเหล่านั้นจะไม่ได้ใช้งานโดยสมบูรณ์ เนื่องจาก failover ยังไม่ส่ง TCP ใด ๆ แพ็คเก็ตที่ตั้งค่าใหม่เป็นแอพลิเคชันไคลเอนต์ การเชื่อมต่อดังกล่าวเปิดรอผลลัพธ์แบบสอบถาม indefinitely (สมมติการหมดเวลาการสอบถาม infinite), และอาจทำให้การเชื่อมต่อกับหยุดการตอบสนอง (แฮง)

เมื่อต้องการแก้ปัญหานี้จากมุมมองแอพลิเคชันไคลเอนต์ เปลี่ยนการหมดเวลาของการสอบถามเป็นจำนวนจำกัด

ลักษณะการทำงานล้มเหลวของฐานข้อมูลเสมือน

เมื่อมีการล้มเหลวเซิร์ฟเวอร์เสมือนการฐานข้อมูล การเชื่อมต่อการเชื่อมโยงล้มเหลวเกิดข้อผิดพลาดถูกส่งกลับไปยังไคลเอ็นต์กำลังรอ ฐานข้อมูลบนโหนล้มเหลวของคลัสเตอร์กำลังปิด และเริ่มใหม่บนโหนเดียวกันสำหรับแต่ละพารามิเตอร์คุณตั้งไว้ใน:

Start\Programs\Administrative Tools (Common)\Cluster Administrator\Group\Failover\Properties
				
เขตแดนเริ่มต้นของกลุ่ม Failover จะเริ่มระบบใหม่ 10 ในรอบระยะเวลา 6 ชั่วโมงก่อน failover เกิดขึ้นกับโหนที่เหลือ อย่างไรก็ตาม SQL Server รีสตาร์ทเพดาน ซึ่งสามารถถูกตรวจสอบถึงคุณสมบัติของ SQL Server บนทรัพยากรคลัสเตอร์ของ SQL Server ได้มีเขตแดนเริ่มต้นของการเริ่มระบบใหม่สาม SQL Server ใน 900 วินาที และส่งผลกระทบ โดยค่าเริ่มต้นต่อกลุ่ม ถ้าไคลเอนต์พยายามเชื่อมต่อกับเซิร์ฟเวอร์ในขณะที่กำลังมีการกู้คืนฐานข้อมูล ไคลเอนต์ได้รับการรอฐานข้อมูลในการกู้คืนข้อความแสดงข้อผิดพลาด และควรลองใหม่อีกครั้งหลังจากการหยุดชั่วคราวสั้น ๆ

SQL Server 6.5 and SQL Server 7.0 considerations

SQL Server 6.5 and SQL Server 7.0 act exactly as described in the previous "Virtual Database Failure Behavior" section.

When SQL Server 7.0 runs as a virtual server SQL Server 7.0 supports only one IP address but might listen on additional ports as configured by the customer. This is described in the "Multiple Listen-On TCP/IP Ports" topic in the following Microsoft Knowledge Base article:
254321INF: Clustered SQL Server Do's, Don'ts and Basic Warnings

Microsoft SQL Server 2000 considerations

SQL Server 2000 has some differences in behavior from the SQL Server 6.5 and SQL Server 7.0 versions.

SQL Server 2000 port usage

By default, a named instance listens on a dynamic port. The first time the server starts with a port set to zero (0), the server requests a free port number from the operating system and then the server listens on that port. The server records this to the registry and then uses the same port every time.

If a server is configured to listen on a dynamic port and the server fails to listen on the dynamic port on startup, then the server chooses another port.

If you configured a static port either during setup or after setup by using the server network utility it fails to listen on TCP/IP if this port is in use.

Clients detect the port number to connect to in the case of a named instance or one with a non-default port number.

The connection information is written to the "LastConnect" cache in this registry key:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\supersocketnetlib\lastConnect
You will find entries for each server and the method that was used to connect to them in the registry.

The client attempts to re-use the connection information on each connection unless it fails and then re-negotiates the new information. This might happen if the port number has changed because someone changed it or if it was a dynamic port that was re-assigned due to a port being in use.

Broken connections

There are three ways a connection can be broken:
  1. The server fails; the process terminates by being killed (system server process ID [spid] kill) or an access violation (AV) or something else causes the operating system or required service to fail.
  2. Machine hardware failure or loss of power.
  3. Server shutdown.
Each of these broken connections exhibit different behaviors seen on the client computer.
  1. In the case where a server fails, the client receives a connection broken error message immediately. You can simulate this behavior by connecting with OSQL, running a long query and then useKILLto terminate your SQL Server process. The client exits with an ODBC error message.
  2. A machine failure is more complicated. The behavior can change slightly based on how the connection loss is detected.

    If the client is in the middle of reading information, the connection loss can be detected immediately because the data stops.

    If the client is just waiting for results, the behavior is slightly different. The behavior depends upon the Keep Alive configuration of the client computer.

    On Microsoft Windows 2000 Keep Alive is set by the client code on a per connection basis. By default, Keep Alive is set to 30 seconds. This means that if the socket dies it is detected within 30 seconds and the client receives an error message. On Microsoft Windows NT 4.0, Keep Alive cannot be set on a per connection basis. Keep Alive must be set for the whole computer, thus affecting all applications on the server.

    รีจิสตรีคีย์ที่จะมีการอ้างอิงถึงได้แก่:
    KeepAliveTime\REG_DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 30000

    KeepAliveInterval\REG_DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 1000
  3. เมื่อคุณเริ่มต้นการปิดการเซิร์ฟเวอร์ เซิร์ฟเวอร์รอครู่สำหรับเครื่องไคลเอนต์ให้เสร็จสมบูรณ์ อย่างไรก็ตาม ถ้าไคลเอนต์จะยังคงรันเซิร์ฟเวอร์ kills เธรดภายในเซิร์ฟเวอร์ killing เธรดอาจทำให้ยังเกิดข้อผิดพลาดที่แตกต่างกันบนไคลเอ็นต์ ข้อผิดพลาดอาจรวมถึงข้อผิดพลาดในการใช้งานไม่ได้เชื่อมต่อ การอย่างไรก็ตาม โดยส่วนใหญ่คุณเห็นข้อความแสดงข้อผิดพลาดนี้:
    "เกิดข้อผิดพลาดที่ไม่รู้จัก เชื่อมต่ออาจมีการตัด โดยเซิร์ฟเวอร์"
    รหัสข้อผิดพลาดท้องถิ่น ODBC มีการตั้งค่าเป็นศูนย์ (0) ในกรณีนี้ แต่จะถูกส่งกลับเป็นข้อความแสดงข้อผิดพลาดไปยังไคลเอนต์

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานของไคลเอ็นต์เซิร์ฟเวอร์เสมือนของ SQL ใน SQL Server 2005 แวะไปที่เว็บไซต์ของ Microsoft สำหรับนักพัฒนาเครือข่าย (MSDN) ต่อไปนี้:
http://msdn2.microsoft.com/en-us/library/ms189585.aspx

คุณสมบัติ

หมายเลขบทความ (Article ID): 273673 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 2.0
ใช้กับ
  • Microsoft SQL Server 6.5 Enterprise Edition
  • Microsoft SQL Server 7.0 Enterprise Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard Edition
Keywords: 
kbhowto kbsql2005cluster kbclientserver kbinfo kbmt KB273673 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:273673

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com