在 VS2005 中使用 ADO (msado15.dll) 操作 SQL Server 時,Recordset::Open 調用 raw_Open 返回 E_FAIL 導致崩潰,多半是連接字串 (ConnectionString) 格式或驅動程式不匹配造成。
SQLOLEDB vs SQLNCLI)。SQL Server 驗證模式:
Provider=SQLOLEDB.1;Data Source=192.168.1.92,2433;Initial Catalog=YourDB;User ID=sa;Password=yourpwd;
Windows 整合驗證模式:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=ServerName\Instance;Initial Catalog=YourDB;
_com_error 並輸出 ErrorMessage(),具體錯誤描述比 `E_FAIL` 更有指導意義。修正連接字串後,Open 應返回 S_OK,崩潰問題即可解決。