En determinadas ocasiones puedes necesitar conectarte a una BD de Microsoft SQL Server desde un servidor Linux por ODBC.
En este post explico como configurar el driver y la conexión para que puedas conectarte en una pagina web en PHP desde un servidor Ubuntu
Lo primero que debemos hacer es instalar los paquetes necesarios:
apt-get install freetds-bin freetds-common freetds-dev tdsodbc odbcinst unixodbc unixodbc-dev odbcinst1debian2 php7.1-odbc
mv /etc/odbcinst.ini /etc/odbcinst.ini.bak
cp /usr/share/tdsodbc/odbcinst.ini /etc/
Una vez instalados los paquetes necesarios ahora toca editar los ficheros de configuracion.
nano /etc/freetds/freetds.conf
Añadimos al final del fichero:
# Servidor Microsoft SQL Server
[MSSQlServer]
host = IP_Servidor_SQL_Server
port = 1433
tds version = 8
client charset = UTF-8
Luego editamos este fichero de configuración del driver:
nano /etc/odbcinst.ini
Y ponemos la siguiente información
[FreeTDS]
Description=TDS driver (Sybase/MS SQL)
Driver=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout =
CPReuse
Y por último editamos este fichero:
nano /usr/local/etc/odbc.ini
Y añadimos la siguiente información:
[FreeTDS-MyDB]
Driver = FreeTDS
Description = MS SQL conexion a tu BD
Trace = No
ServerName = IP_De_Tu_Servidor_SQL_Server
Port = 1433
Database = Nombre_BD
TDS_Version = 8
Ahora ya nos queda probar la conexion desde nuestra pagina en PHP:
try {
//connection params
$dbCon = new PDO('odbc:Driver=FreeTDS; Server=my_server_host; Port=1433; Database=my_database; TDS_Version=7.4; ClientCharset=UTF-8', 'my_login', 'my_pass');
//test query
$result = $dbCon->query('SELECT TOP 10 * FROM dbo.my_table');
//show the results
foreach ($result as $row)
{
print_r( $row );
}
//close the connection
$dbCon = null;
} catch (PDOException $e) {
//show exception
echo $e->getMessage();
}
Deja una respuesta