Connection String สำหรับ App ที่ต่อกับ MSSQL ที่กำหนด MultiSubnetFailover

MultiSubnetFailover ใน MS SQL Server คือ อะไร

เป็น Feature ที่ช่วยเรื่อง High Availability (HA) หรือ Disaster Recovery (DR) ของฝั่ง Database ที่ Implement Always On Availability Groups หรือ Failover Cluster Instances (FCI)  โดย Key ของมันจะเข้ามาแก้

  • ปัญหาเดิมๆ ที่เราอาจจะทำ HA / DR ไว้ โดยจับจาก DNS เมื่อมีการ Failover ระหว่าง Subnet (เช่น จาก Data Center A ไป Data Center B) Client จะใช้เวลาในการเชื่อมต่อใหม่ เพราะจะต้องรอ Timeout ของ DNS ในแต่ละ IP Address
  • เมื่อใส่ MultiSubnetFailover ใน App Client จะพยายามเชื่อมต่อไปยังทุก IP Address ที่ระบุใน Connection String พร้อมกัน (parallel) ทำให้ลดเวลาการเชื่อมต่อใหม่หลังเกิด Failover ระหว่าง Subnet ได้อย่างมาก

ใน App ต้องปรับอะไรบ้าง ?

เติม MultiSubnetFailover=True เข้าไปใน connection string ดังนี้

DOTNET (appsetting.json)
Server=<ip_or_dns>,<your_custom_port>;Database=<namedatabase>;User Id=myUsername;Password=myPassword;MultipleActiveResultSets=True;MultiSubnetFailover=True;
JAVA SPRING (yaml)
app: null
datasource: null
url: >-
  jdbc:sqlserver://<ip_or_dns>:<port>;databaseName=<namedatabase>;integratedSecurity=false;encrypt=true;trustServerCertificate=true;MultiSubnetFailover=True

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.