[MSSQL] ทดสอบ Legacy App เจอ Error [DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL Security error.

ไหนๆก็มี MSSQL Server 2019 Container แล้ว เลยลองทดสอบนำเอา Legacy App (VB6) มาลองเชื่อมต่อดูพบว่าบางเครื่องใช้งานได้ และบางเครื่องใช้งานไม่ได้ครับ

หลังจากทดสอบเอา Code มา Debug ดู พบว่าเจอ Error

[DBNETLIB][ConnectionOpen (SECDoClientHandshake()).]SSL Security error. 

ลองไล่สาเหตุ

  • Config ของ Legacy App (VB6) ใช้ Microsoft SQL Server Native Client 11.0 (SQLNCLI11)
Provider=SQLNCLI11;Server=myServerAddress;Database=myDataBase;UID=myUsername;PWD=myPassword;
  • บางเครื่องใช้งานได้ และบางเครื่องใช้งานไม่ได้ เนื่องจากตรวจสอบใน ODBC 32 bits ระหว่างเครื่องที่ใช้งานได้ และใช้งานไม่ได้ พบว่ามันขาด Library Microsoft SQL Server Native Client 11.0 (SQLNCLI11)
  • เหมือนจะได้ทางออกแล้ว แต่ปรากฏ Microsoft SQL Server Native Client 11.0 (SQLNCLI11) ไม่รองรับ Windows 10 ซะงั้น (ตอนแรกยังลงได้ แต่น่าจะโดนบาง Update ไปครับ) และทาง Microsoft ประกาศไม่พัฒนาต่อแล้วตาม Support Policies - SQL Server Native Client | Microsoft Docs

ทางออกของปัญหาครับ

  • ถ้าลองติดตั้ง Microsoft SQL Server Native Client 11.0 (SQLNCLI11) ใช้วิธีนี้ได้ครับ แต่มีประเด็นเรื่อง Support
  • เปลี่ยนไปใช้ Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) แทนครับ เพราะเป็นตัวที่มาแทน SQLNCLI11 และ SQLOLEDB
  • Connection String ของ App ที่แก้ไขแล้ว
Provider=MSOLEDBSQL;Server=myServerAddress;Database=myDataBase;UID=myUsername;PWD=myPassword;
  • ตัว Connection String เป็นเฉพาะของ App นะครับ อาจจะต้องระวังการนำไปใช้งาน ตรวจสอบจาก ConnectionStrings.com ครับ

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.