rksoftware

Visual Studio とか C# とかが好きです

Xamarin Android から SQL Server につながらない場合

Android から SQL Server に直接接続してデータを取得しようとすると次のエラーが発生することがあります。

System.Data.SqlClient.SqlException: <Timeout exceeded getting exception details>

■ 今回の原因

原因のパターンはいつくかあり得ますが、今回発生したのは Android エミュレーターの挙動が要因でした。
通常(WebAPI を叩くとき)は、Android エミュレーターからホストの PC へ接続する場合は、接続先として 10.0.2.2 を指定します。
この 10.0.2.2 で接続しようとし失敗していました。

■ 対処

10.0.2.2 ではなく、ホスト PC の IP アドレスを設定します。
また、SQL Server 用のポートも開放します。
※標準では 1433。

これで Android エミュレーターからホスト PC の SQL Server へ接続できました。