Conexión MSSQL desde Ubuntu

10

Necesito un tutorial fácil y completo para hacer una conexión MSSQL desde Ubuntu.

Creo que instalé FreeTDS y UnixODBC pero las configuraciones son muy complicadas. No entendí el problema.

Seguí este tutorial: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Pero fallé.

root@hackmachine:~# isql -v example.com XXXXX XXXXXXX
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
root@hackmachine:~# 

Editar:

Antes de esta edición, "/etc/odbcinst.ini" y "/etc/odbc.ini" estaban vacíos.

Agregué estas líneas a /etc/odbcinst.ini:

[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         =

FileUsage       = 1

Agregué estas líneas a /etc/odbc.ini:

[project_development]
Driver = FreeTDS
Description     = ODBC connection via FreeTDS
Trace           = No
Servername      = developer
Database        = project_development

[project_test]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = developer
Database = test

[project_production]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = production
Database = project_production

No hice ningún cambio en "/etc/freetds/freetds.conf" desde el principio.

Aún así, nada ha cambiado.

mertyildiran
fuente
¿ha creado una entrada en el archivo ODBC (/etc/odbc.ini)? y también verifique las unidades en el archivo "/etc/odbcinst.ini"
vembutech
Ambos archivos están vacíos, ¿qué debo hacer exactamente? ¿Puedes compartir un enlace o algunos detalles?
mertyildiran
Creo que se ha perdido el paso "Configurar UnixODBC" disponible en el enlace que siguió. Actualice amablemente esos dos archivos como en la URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… y verifique si el problema se resolvió.
vembutech
Nada ha cambiado. Edité la pregunta que puedes ver arriba
mertyildiran

Respuestas:

11

Aquí hay instrucciones paso a paso (que se encuentran aquí) :

Primero, instale unixODBC:

sudo apt-get install unixodbc unixodbc-dev

También instalé los siguientes paquetes (quizás necesarios):

sudo apt-get install tdsodbc php5-odbc

Luego descargue, descomprima, compile e instale FreeTDS (advertencia, la URL puede cambiar):

cd /usr/local

wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar xvfz freetds-stable.tgz
cd freetds-0.82
./configure --enable-msdblib --with-tdsver=8.0 --with-unixodbc=/usr
make
make install
make clean

Intente una conexión a través de Telnet a su instancia de SQL Server:

telnet 192.168.0.1 1433

Use la herramienta tsql para probar la conexión:

tsql -S 192.168.0.1 -U devuser

Esto debería solicitarle la contraseña, después de lo cual puede esperar contra esperanza ver esta hermosa señal:

1>

Si eso funcionó, recomiendo organizar una fiesta (codificación). El siguiente es un poco de configuración. Abra el archivo de configuración de FreeTDS. /usr/local/etc/freetds.conf

Agregue la siguiente entrada al final del archivo. Estamos configurando un nombre de fuente de datos (DSN) llamado 'MSSQL'.

[MSSQL]
host = 192.168.0.1
port = 1433
tds version = 8.0

Ahora abra el archivo de configuración ODBC: /usr/local/etc/odbcinst.ini

Y agregue la siguiente entrada de controlador MSSQL (FreeTDS) al final:

[FreeTDS]
Description = FreeTDS driver
Driver = /usr/local/lib/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
FileUsage = 1
UsageCount = 1

Luego, finalmente, configure el DSN dentro de ODBC en el archivo odbc.ini aquí /usr/local/etc/odbc.ini Agregando este bit al archivo:

[MSSQL]
Description = MS SQL Server
Driver = /usr/local/lib/libtdsodbc.so
Server = 192.168.2.3
UID = devuser
PWD = devpass
ReadOnly = No
Port = 1433

Pruebe la conexión con la herramienta isql:

isql -v MSSQL devuser 'devpass'

Si ve "Conectado!" eres de oro, felicidades! Si no, lo siento mucho; vea a continuación dónde hay algunos recursos que podrían ayudar.

Ahora reinicie Apache y pruébelo desde PHP usando 'MSSQL' como DSN. Si algo no funciona, puede intentar instalar alguno o todos estos paquetes: mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Trevor Clarke
fuente
después de "tsql -S 192.168.0.1 -U devuser": conexión cerrada por host externo. ¿Qué tengo que hacer?
mertyildiran
use su IP local
Trevor Clarke
En realidad, utilicé la dirección IP del servidor MSSQL "tsql -S 77.223.141.204 -U bacon"
mertyildiran
¿no sería localhost entonces? porque no puedes conectarte a tu propia ip externa.
Trevor Clarke
Sí, es una IP externa ¿no es posible acceder a través de este método? ¿Qué tengo que hacer?
mertyildiran
0

Espero que haya copiado el contenido en el enlace al archivo. Necesita actualizar los detalles de su servidor SQL en el archivo "/etc/odbc.ini". Puedes referir el enlace http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/

vembutech
fuente
después de "tsql -S 192.168.0.1 -U devuser": conexión cerrada por host externo. ¿Qué tengo que hacer?
mertyildiran
¿Puede verificar si el puerto 1433 está abierto en el servidor MSSQL? Debe asegurarse de poder acceder al puerto 1433 de su servidor MSSQL. Si no está abierto, abra el puerto y luego verifique
vembutech
0

Tuve que hacer esto para Ubuntu 14.04 y 17.04, ambos LTS de 64 bits. Probablemente funcione para versiones posteriores.

Instale unixodbc (conexiones ODBC), freetds (conexiones de SQL Server) y tdsodbc (puente entre los dos anteriores)

sudo apt install unixodbc freetds-bin tdsodbc

Agregue sus controladores ODBC a /etc/odbcinst.ini (debe estar vacío)

[SQL Server]
Description = FreeTDS driver
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
FileUsage = 1
UsageCount = 1

Agregue sus DSN a /etc/odbc.ini (también debe estar vacío)

[ACCOUNTING]
Description = Accounting database
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Server = 123.123.123.123
Database = your_database_name
Port = 1433

Y eso fue todo.

ASalazar
fuente
libtdsodbc.so y libtdsS.so también se pueden encontrar en / usr / lib / x86_64-linux-gnu / odbc /
Strixy
0

Para responder la pregunta que implica:

Necesito un tutorial fácil y completo para hacer una conexión MSSQL desde Ubuntu

... e ignorando todas las cosas de configuración de FreeTDS.

Use mssql-cli ( instalación , uso ).

oeuftete
fuente
0

Trabajo en una empresa que usa mucho los productos de Microsoft. Sin embargo, prefiero trabajar en una máquina Linux (Ubuntu). Específicamente, uso Ubuntu 16.04 LTS .

Uso DataGrip de JetBrains o SQL Electron como GUI de SQL. DataGrip requerirá el controlador JDBC de Microsoft para SQL Server al que debe apuntar manualmente cuando abra DataGrip por primera vez. Puse esto /usr/share/java/, pero en cualquier lugar funcionará.

La conexión es simple en mi computadora portátil con Windows 10. Simplemente abro SQL Server Management Studio y uso mis credenciales para iniciar sesión (nombre de usuario + contraseña); No uso la autenticación de Windows.

Prerrequisitos

Para conectarse desde Ubuntu, es un poco ( solo un poco ) de trabajo extra. Primero, en mi máquina con Windows 10, abro un terminal Powershell y escribo lo siguiente

nslookup <server name here>

y devuelve algo como

Non-authoritative answer:
Name: <server name here>
Address: <server's address>

El nombre y la dirección del servidor serán estáticos, por lo que lo anterior solo será necesario para ejecutarse una vez por servidor al que intente acceder.

DataGrip

Luego, salto a mi máquina Linux y abro DataGrip. Para lo Hostque escribo <server's address>, Puerto: 1433 (esto es predeterminado para MS SQL Server). La URL debería verse así,

URL: jdbc:sqlserver://<server's address>:1433

Si hace clic en Test Connection, le pedirá información de inicio de sesión si aún no la ha agregado. ¡Y eso es todo para DataGrip!

DataGrip también tiene el siguiente blog, que puede ser útil para los nuevos usuarios: Conexión de DataGrip a MS SQL Server

SQL Electron

Si no desea comprar DataGrip, puede usar SQL Electron. Los pasos son similares. Abra SQL Electron, haga clic en Agregar para agregar un nuevo servidor y Server Addressescriba <server's address>, Puerto: 1433, y finalmente sus credenciales de inicio de sesión. ¡Y eso es!

Jon
fuente
0

Para conectarse a la instancia de MSSQL que se ejecuta en un servidor remoto:

Siga los pasos correspondientes en este artículo https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

NOTA: Para completar las pruebas, debe hacer algunas cosas más: Editar /etc/odbc.ini y agregar lo siguiente:

[MSSQL] Driver=ODBC Driver 17 for SQL Server Server=[ServerIP][,1433]

Para realizar la prueba, ejecute lo siguiente en la terminal:

isql -v MSSQL [nombre de usuario] [contraseña]

Debería ver una respuesta "conectada".

Si tiene dificultades, verifique que los puertos en su servidor Linux y Windows estén abiertos.

Atron Seige
fuente