Escenario, se desea realizar una conexión desde una máquina Linux a un servidor MS SQL Server remota usando PHP.
Paso las especificaciones:
- Ubuntu 22.04.1 LTS - MS SQL Server 2014 (El servidor remoto está bajo Windows 2008 R2).
- PHP Version 8.1.16
- Driver de conexión usadas:
-- pdo_sqlsrv 5.10.1 (confirmado que el módulo está cargado correctamente en la máquina GNU/Linux).
He realizado las siguientes conexiones:
$usuario=sa;
$contrasenya=1234;
//PDO_SQLSRV API
/*$serverName = "192.168.1.88";
$conn = new PDO("sqlsrv:Server = $serverName;
Database = mibasedatos;
Encrypt = true;
TrustServerCertificate = false",
$usuario,
$contrasenya);
var_dump($conn);*/
$usuario=sa;
$contrasenya=1234;
// SQLSRV API
/*$serverName = "192.168.1.88\\MiInstancia, 1433";
$connectionInfo = array( "Database"=>mibasedatos,
"UID"=>$usuario,
"PWD"=>$contrasenya,
"CharacterSet" => 'UTF-8',
"Encrypt"=>true,
"TrustServerCertificate"=>false);
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "<b>Connection established.</b><br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}*/
function OpenConnection()
{
$serverName = "tcp:192.168.1.88,1433";
$connectionOptions = array("Database"=>"mibasedatos",
"Uid"=>"sa", "PWD"=>"1234");
$conn = sqlsrv_connect($serverName, $connectionOptions);
if($conn == false)
die( print_r( sqlsrv_errors(), true));
return $conn;
}
OpenConnection();
En todas el error es similar:
Array ( [0] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 10054 [kode] => 10054 [2] => [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746 [message] => [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746 ) [1] => Array ( [0] => 08001 [SQLSTATE] => 08001 [1] => 10054 [kode] => 10054 [2] => [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection [message] => [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection ) )
He realizado conexión desde consola con tsql y conecta correctamente.
tsql -H 192.168.1.88 -p 1433 -D mibasedatos -U sa -P 1234
Desde gestores visuales tipo DBeaver puedo conectar sin problemas al motor, pero claro utilizan otros Drivers propios, en Java creo propios para realizar la conexión; por lo que descartado que pueda ser algo a nivel de FW de la máquina GNU/Linux.
He cambiado también el nivel de seguridad de OpenSSL.
¿Alguien ha conseguido realizar una conexión en este escenario?