ไหนๆก็มี 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 sent to your email.