{"id":494,"date":"2014-07-30T12:33:25","date_gmt":"2014-07-30T17:33:25","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/nemo\/?p=494"},"modified":"2014-09-26T11:24:14","modified_gmt":"2014-09-26T16:24:14","slug":"conexion-odbc-entre-ubuntu-14-04-trusty-tahr-con-sql-server-utilizando-freetds","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/30\/conexion-odbc-entre-ubuntu-14-04-trusty-tahr-con-sql-server-utilizando-freetds\/","title":{"rendered":"Conexi\u00f3n ODBC entre Ubuntu 14.04 (Trusty Tahr) con SQL Server utilizando FreeTDS"},"content":{"rendered":"<div id=\"attachment_504\" style=\"width: 341px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/FreeTDS.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-504\" class=\"size-full wp-image-504\" src=\"http:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/FreeTDS.jpg\" alt=\"Conexion ODBC v\u00eda isql\" width=\"341\" height=\"146\" srcset=\"https:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/FreeTDS.jpg 341w, https:\/\/blog.espol.edu.ec\/nemo\/files\/2014\/07\/FreeTDS-300x128.jpg 300w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/a><p id=\"caption-attachment-504\" class=\"wp-caption-text\">Conexion ODBC v\u00eda isql<\/p><\/div>\n<p>En el <a title=\"Conexi\u00f3n ODBC entre Ubuntu 14.04 (Trusty Tahr) con SQL Server utilizando el Microsoft\u00ae ODBC Driver 11 for Linux\" href=\"http:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/18\/coneccion-odbc-entre-ubuntu-14-04-trusty-tahr-con-sql-server-utilizando-el-microsoft-odbc-driver-11-for-linux\/\" target=\"_blank\">post anterior<\/a> se mostr\u00f3 como realizar la <a title=\"Conexi\u00f3n ODBC entre Ubuntu 14.04 (Trusty Tahr) con SQL Server utilizando el Microsoft\u00ae ODBC Driver 11 for Linux\" href=\"http:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/18\/coneccion-odbc-entre-ubuntu-14-04-trusty-tahr-con-sql-server-utilizando-el-microsoft-odbc-driver-11-for-linux\/\" target=\"_blank\">conexi\u00f3n ODBC entre Ubuntu 14.04 (Trusty Tahr) con SQL Server utilizando el Microsoft\u00ae ODBC Driver 11 for Linux<\/a>, lo cual debo decir que luego de realizar diversas pruebas es la mejor opci\u00f3n para conectarse a servidores MS SQL 2003 o mayores, en el presente post vamos a utilizar <a title=\"freetds\" href=\"http:\/\/www.freetds.org\/\" target=\"_blank\">FreeTDS <\/a>para realizar la conexi\u00f3n, esto sirve para quienes no desean utilizar el driver oficial de MS o si deben conectarse a un servidor MS SQL 2000 por ejemplo.<\/p>\n<h4>Preeliminares<\/h4>\n<p>Debo mencionar que los pasos detallados a continuaci\u00f3n se los realiza en un Ubuntu 14.04 server al cual se le ha instalado\/configurado lo detallado en el <a title=\"Conexi\u00f3n ODBC entre Ubuntu 14.04 (Trusty Tahr) con SQL Server utilizando el Microsoft\u00ae ODBC Driver 11 for Linux\" href=\"http:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/18\/coneccion-odbc-entre-ubuntu-14-04-trusty-tahr-con-sql-server-utilizando-el-microsoft-odbc-driver-11-for-linux\/\" target=\"_blank\">post anterior<\/a>, rev\u00edsese sobre todo los pasos que se utilizaron para instalar unixODBC pues es necesario tener instalado unixODBC antes de instalar FreeTDS<\/p>\n<h4>Instalaci\u00f3n\/Configuraci\u00f3n de FreeTDS<\/h4>\n<ul>\n<li>Instalar FreeTDS (con sudo o con usuario root)<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># apt-get install freetds-bin freetds-common freetds-dev<\/code><\/p>\n<ul>\n<li>Probar la correcta instalaci\u00f3n<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># tsql -C<\/code><\/p>\n<p style=\"padding-left: 60px\">debe mostrar algo parecido a:<\/p>\n<p style=\"padding-left: 60px\"><code>Compile-time settings (established with the \"configure\" script)<br \/>\nVersion: freetds v0.91<br \/>\nfreetds.conf directory: \/etc\/freetds<br \/>\nMS db-lib source compatibility: no<br \/>\nSybase binary compatibility: yes<br \/>\nThread safety: yes<br \/>\niconv library: yes<br \/>\nTDS version: 4.2<br \/>\niODBC: no<br \/>\nunixodbc: yes<br \/>\nSSPI \"trusted\" logins: no<br \/>\nKerberos: yes<\/code><\/p>\n<ul>\n<li>Se necesita el archivo <code>libtdsodbc.so<\/code> para configurar FreeTDS, as\u00ed que se procede a realizar la b\u00fasqueda en el terminal<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># find \/ -name libtdsodbc.so<\/code><\/p>\n<p style=\"padding-left: 60px\">deber\u00eda indicar lo siguiente (... pero...):<\/p>\n<p style=\"padding-left: 60px\"><code>\/usr\/lib\/x86_64-linux-gnu\/odbc\/libtdsodbc.so<\/code><\/p>\n<ul>\n<li>En mi m\u00e1quina no lo encontr\u00f3, as\u00ed que instalo <code>odbcinst1debian2<\/code> y <code>tdsodbc<\/code>:<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># apt-get install odbcinst1debian2 tdsodbc<\/code><\/p>\n<ul>\n<li>Repito la b\u00fasqueda en el terminal<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># find \/ -name libtdsodbc.so<\/code><\/p>\n<p style=\"padding-left: 60px\">Y ahora s\u00ed me muestra:<\/p>\n<p style=\"padding-left: 60px\"><code>\/usr\/lib\/x86_64-linux-gnu\/odbc\/libtdsodbc.so<\/code><\/p>\n<ul>\n<li>En este punto seg\u00fan los manuales que hab\u00eda encontrado se deber\u00eda configurar <code>\/etc\/odbcinst.ini<\/code>, <code>\/etc\/odbc.ini<\/code> y <code>\/etc\/freetds\/freetds.conf<\/code> pero esto no me funciona, as\u00ed que he procedido a configurar <code>\/<\/code><code>usr\/local\/<\/code>etc\/odbcinst.ini, <code>\/usr\/local\/etc\/odbc.ini<\/code> y <code>\/etc\/freetds\/freetds.conf<\/code><\/li>\n<li><code>\/usr\/local\/etc\/odbcinst.ini<\/code><\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># nano \/usr\/local\/etc\/odbcinst.ini<\/code><\/p>\n<p style=\"padding-left: 30px\">Agregar lo siguiente (en este archivo ya deben haber las l\u00edneas correspondientes a\u00a0<code>[SQL Server Native Client 11.0]<\/code> que se incluyeron en el post anterior)<\/p>\n<p style=\"padding-left: 60px\"><code>[FreeTDS]<br \/>\nDescription=FreeTDS Driver v0.91<br \/>\nDriver=\/usr\/lib\/x86_64-linux-gnu\/odbc\/libtdsodbc.so<br \/>\nSetup=\/usr\/lib\/x86_64-linux-gnu\/odbc\/libtdsS.so<br \/>\nfileusage=1<br \/>\ndontdlclose=1<br \/>\nUsageCount=1<\/code><\/p>\n<ul>\n<li><code>\/usr\/local\/etc\/odbc.ini<\/code><\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># nano \/usr\/local\/etc\/odbc.ini<\/code><\/p>\n<p style=\"padding-left: 30px\">Agregar lo siguiente:<\/p>\n<p style=\"padding-left: 60px\"><code>[FreeTDS-MyDB]<br \/>\nDriver = FreeTDS<br \/>\nDescription = MS SQL connection to 'NDWH' database<br \/>\nTrace = No<br \/>\nServerName = srv<\/code><code>MyServer<\/code><br \/>\nPort = 1433<br \/>\nDatabase = <em>MyDB<\/em><br \/>\nTDS_Version = 8<\/p>\n<ul>\n<li><code>\/etc\/freetds\/freetds.conf<\/code><\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># nano \/etc\/freetds\/freetds.conf<\/code><\/p>\n<p style=\"padding-left: 30px\">Agregar lo siguiente (m\u00e1s detalle puede verse <a title=\"The freetds.conf file\" href=\"http:\/\/www.freetds.org\/userguide\/freetdsconf.htm\" target=\"_blank\">aqu\u00ed<\/a>):<\/p>\n<p style=\"padding-left: 60px\"><code># Servidor MyServer, tipo Microsoft SQL Server<br \/>\n[srv<\/code><code>MyServer]<br \/>\nhost = <em>192.168.99.999<\/em><br \/>\nport = 1433<br \/>\ntds version = 8<br \/>\ninitial block size = <em>512<\/em> <span style=\"color: #003300\">#(&lt;- este punto lo detallo abajo)<\/span><br \/>\n<\/code><\/p>\n<ul>\n<li>Verificar que la m\u00e1quina vea el driver<\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># odbcinst -q -d<\/code><\/p>\n<p style=\"padding-left: 60px\">debe dar como resultado una lista que contiene entre cuyos elementos contiene [FreeTDS] (o el nombre que se haya puesto en <code>usr\/local\/etc\/odbcinst.ini<\/code>)<\/p>\n<ul>\n<li>Verificar que se pueda conectar con la BBDD utilizando <code>isql<\/code> y el nombre utilizado en <code>\/usr\/local\/etc\/odbc.ini<\/code><\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># isql -v FreeTDS-MyDB <em>MyUsuario<\/em> <em>MyPassword<\/em><\/code><\/p>\n<p style=\"padding-left: 60px\">debe dar como resultado lo siguiente:<\/p>\n<p style=\"padding-left: 60px\"><code>+---------------------------------------+<br \/>\n| Connected!\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n| sql-statement\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n| help [tablename]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n| quit\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n+---------------------------------------+<br \/>\nSQL&gt;<\/code><\/p>\n<ul>\n<li>Verificar que se pueda conectar con la BBDD utilizando <code>tsql<\/code> y el nombre utilizado en <code>\/etc\/freetds\/freetds.conf<\/code><\/li>\n<\/ul>\n<p style=\"padding-left: 30px\"><code># tsql -S <em>srvMyServer<\/em> -U <em>MyUsuario<\/em> -P <em>MyPassword<\/em> -D <em>MyDB<\/em><\/code><\/p>\n<p style=\"padding-left: 60px\">debe dar como resultado algo como lo siguiente:<\/p>\n<p style=\"padding-left: 60px\"><code>locale is \"en_US.UTF-8\"<br \/>\nlocale charset is \"UTF-8\"<br \/>\nusing default charset \"UTF-8\"<br \/>\nDefault database being set to ndwh<br \/>\n1&gt;<br \/>\n<\/code><\/p>\n<p>&nbsp;<\/p>\n<h4>Posibles errores y el initial block size<\/h4>\n<ul>\n<li>Si se conecta con <code>tsql<\/code> y no con <code>isql<\/code> entonces hay algun error en las configuraciones en <code>odbc.ini<\/code> o <code>odbcinst.ini<\/code><\/li>\n<\/ul>\n<ul>\n<li>Si no se conecta con <code>isql<\/code> ni con <code>tsql<\/code> es probablemente un error con \"tds version\", \"port\" o alguna configuracion en el MSSQL server, mirar <a title=\"FreeTDS - Confirm the installation\" href=\"http:\/\/freetds.schemamania.org\/userguide\/confirminstall.htm\" target=\"_blank\">http:\/\/freetds.schemamania.org\/userguide\/confirminstall.htm<\/a>,<\/li>\n<li>Cuelgues\/Errores o p\u00e9rdida de conexi\u00f3n al realizar querys \"grandes\", mira <a title=\"FreeTDS - Slow connection or data retrieval\" href=\"http:\/\/www.freetds.org\/userguide\/seemtooslow.htm\" target=\"_blank\">esto<\/a> y en particular juega con el <code>initial block size<\/code> como indico a continuaci\u00f3n,<\/li>\n<li>El par\u00e1metro initial block size del\u00a0<code>\/etc\/freetds\/freetds.conf<\/code> seg\u00fan su <a title=\"The freetds.conf file\" href=\"http:\/\/www.freetds.org\/userguide\/freetdsconf.htm\" target=\"_blank\">gu\u00eda <\/a>sirve para e<span id=\"result_box\" lang=\"es\"><span class=\"hps\">specificar el<\/span> <span class=\"hps\">tama\u00f1o m\u00e1ximo de un<\/span> <span class=\"hps\">bloque, pero como yo tuve problemas de cuelgue (<em>hanging<\/em>) empec\u00e9 a jugar con este par\u00e1metro (recordar que son multiplos de 512) y me funcion\u00f3 para mitigar este problema que me surgi\u00f3 <\/span><\/span>al hacer querys grandes.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>En el siguiente post se muestra la conexi\u00f3n con una base Oracle utilizando su cliente oficial.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el post anterior se mostr\u00f3 como realizar la conexi\u00f3n ODBC entre Ubuntu 14.04 (Trusty Tahr) con SQL Server utilizando el Microsoft\u00ae ODBC Driver 11 for Linux, lo cual debo decir que luego de realizar diversas pruebas es la mejor opci\u00f3n para conectarse a servidores MS SQL 2003 o mayores, en el presente post vamos &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/blog.espol.edu.ec\/nemo\/2014\/07\/30\/conexion-odbc-entre-ubuntu-14-04-trusty-tahr-con-sql-server-utilizando-freetds\/\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":3803,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[866],"tags":[1171605,1171610,1171612,1171613,1171614,1171611,1171606,1171625,822,325,1171608,1171609],"class_list":["post-494","post","type-post","status-publish","format-standard","hentry","category-linux","tag-conectarse-a-ms-sql-server-desde-ubuntu-14-04","tag-conexion-odbc-desde-ubuntu-a-microsof-sql-server","tag-configurar-freetds","tag-cuelgues-al-hacer-querys-con-freetds","tag-hanging-freetds","tag-instalar-freetds","tag-instalar-unixodbc","tag-linux","tag-open-source","tag-software-libre","tag-ubuntu-14-04","tag-ubuntu-trusty-tahr","item-wrap"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts\/494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/users\/3803"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/comments?post=494"}],"version-history":[{"count":8,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts\/494\/revisions"}],"predecessor-version":[{"id":519,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/posts\/494\/revisions\/519"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/media?parent=494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/categories?post=494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/nemo\/wp-json\/wp\/v2\/tags?post=494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}