codeigniterのバグっぽい。
INSERTやUPDATE後の影響行を取得する関数を使っても値が取れない。
system
∟database
∟drivers
∟sqlsrv
∟sqlsrv_driver.phpの274行目辺り、
affected_rows() の処理を以下のように修正。
return @sqlrv_rows_affected($this->conn_id);
↓
return sqlsrv_rows_affected($this->return_id);
そして146行目辺りの_execute()で、
$sql = $this->_prep_query($sql);
この下に以下を追記。
if(stripos($sql,'UPDATE') !== FALSE || stripos($sql,'INSERT') !== FALSE) { return sqlsrv_query($this->conn_id, $sql, null, array()); }
これで解決。