System.AccessViolationException:嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞。在 System.Data.dll 中發生。

Server=(Local) → 正常Server=192.168.x.x (本機 IP) → 拋出 AccessViolationException' 正常
Public connStr As String = "Server=(Local);Database=charge_sys;User ID=sa;Password=123456"
' 錯誤
Public connStr As String = "Server=192.168.24.123;Database=charge_sys;User ID=sa;Password=123456"
唯一差異在 Server 值:(Local) vs 具體 IP。
以系統管理員身分開啟命令提示字元:
netsh winsock reset
重啟電腦。此操作重置網路通訊端介面,修復因驅動/軟體衝突導致的 TCP/IP 堆疊損壞。
Visual Studio 回報中心確認此為 VS2013 安裝後的已知問題,微軟於 .NET Framework 4.5.2 (2014/05 釋出) 修復。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\Release (394802 = 4.6.1, 394254 = 4.5.2)。

System.Data.SqlClient 內部觸發非受控記憶體存取違規。(Local) 走 Shared Memory / Named Pipe 協定,繞過 TCP 堆疊,因此不受影響。SqlClient 內部緩衝區管理邏輯,徹底解決此類 AccessViolation。netsh winsock reset + 重啟,無風險、速度快。Server=localhost 或 Server=127.0.0.1 走 TCP 回環,避免 (Local) 協定歧義。