Re: Looking up hostname from IP address and connection problem MS SQL Server from php

Marc-André Legrand <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
OK, 

If I understood well, I have to get the following configurations in these files :

 In /etc/odbc.ini script : 
============================================================
 [ODBC Data Sources]
 MyMSSQLServerName=MSSQL Server
 [MyMSSQLServerName]
 Driver = /usr/lib64/libtdsodbc.so.0
 Description = MSSQL Server
 Trace = No
 Server = 192.168.1.32
 Database = mydatabase
 Port = 1433
 TDS_Version = 7.2
============================================================



In /etc/odbcinst.ini  file :
==============================================================
# Example driver definitions
# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver  = /usr/lib/psqlodbc.so
Setup  = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbc.so
Setup64  = /usr/lib64/libodbcpsqlS.so
FileUsage = 1

# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver  = /usr/lib/libmyodbc5.so
Setup  = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64  = /usr/lib64/libodbcmyS.so
FileUsage = 1

[FreeTDS]
Driver = /usr/lib64/libtdsodbc.so.0
Setup = /usr/lib64/libtdsS.so
Description = MSSQL Server
Trace = No
 ================================================================================



The  /etc/freetds.conf file :  
=====================================================================
#   $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $
#
# This file is installed by FreeTDS if no file by the same
# name is found in the installation directory.
#
# For information about the layout of this file and its settings,
# see the freetds.conf manpage "man freetds.conf".
# Global settings are overridden by those in a database
# server specific section
[global]
# TDS protocol version
; tds version = 4.2
# Whether to write a TDSDUMP file for diagnostic purposes
# (setting this to /tmp is insecure on a multi-user system)
; dump file = /tmp/freetds.log
; debug flags = 0xffff
# Command and connection timeouts
; timeout = 10
; connect timeout = 10

# If you get out-of-memory errors, it may mean that your client
# is trying to allocate a huge buffer for a TEXT field.
# Try setting 'text size' to a more reasonable limit
text size = 64512
# A typical Sybase server
[egServer50]
host = symachine.domain.com
port = 5000
tds version = 5.0
# A typical Microsoft server
[egServer70]
host = ntmachine.domain.com
port = 1433
tds version = 7.0 ## I added theses lines below
# MSSQL ServerName
[MyMSSQLServerName]
host = 192.168.1.32
port = 1433
tds version = 7.0
# client charset = UTF-8
===============================================================================================


> These 4 lines here are useless and confusing, odbcinst.ini is just for
> drivers, not connections.

OK.

> It's better to set Setup for unixODBC with same value as Driver
> (FreeTDS provide a Setup).

I don't understand everything, could you give me an example how should I make the script in odbcinst.ini, odbc.ini and freetds.conf please ?


> You should use DSN here to refer the entry you configured in odbc.ini.
> Also you should try with isql tools to connect.
> 
> Something like "DSN=MyMSSQLServerName;UID=user;PWD=password;"
> replacing user and password. You need either to provide a
> username/password or setup Kerberos.
> 

In my case, the php file refers the odbcinst.ini. Can you tell me how could I must my php page refers to the odbc.ini configuration , 
if I should use :
$dsn = "DSN=MyMSSQLServerName;UID=user;PWD=password;"; 
$cnx = odbc_connect($dsn,'','');
?
Sorry, I use the odbc connection and odbc functions (not php mssql functions)  for my web server .

I know nothing about Kerberos. The value of UID, is the authentication SQL Server login or Windows login  ?
Should I modify something in my MS Windows Server or SQL Server ? What should I do about this ?   

Thank you very mutch.

Best regards.















> Date: Sun, 1 Mar 2015 08:11:48 +0000
> From: [email protected]
> To: [email protected]
> Subject: Re: [freetds] Looking up hostname from IP address and connection problem MS SQL Server from php
> 
> 2015-02-27 14:14 GMT+00:00 Marc-André Legrand <[email protected]>:
> >
> >
> >
> > Hello,
> >
> > I installed FreeTDS on CentOS 6.6 and I have a connection problem between
> > PHP Server and MS SQL Server 2014. I have the following message :
> > Warning: odbc_connect(): SQL error: [unixODBC][FreeTDS][SQL Server]Unable to connect
> > to data source, SQL state S1000 in SQLConnect
> > After FreeTDS installation I made a test by :
> > # tsql -C
> > Compile-time settings (established with the "configure" script)
> >                             Version: freetds v0.91
> >              freetds.conf directory: /etc
> >      MS db-lib source compatibility: yes
> >         Sybase binary compatibility: yes
> >                       Thread safety: yes
> >                       iconv library: yes
> >                         TDS version: 4.2
> >                               iODBC: no
> >                            unixodbc: yes
> >               SSPI "trusted" logins: no
> >                            Kerberos: yes
> >
> >
> > It is a FreeTDS RPM version that I have got .
> > Here is Linux Server feature :
> > CentOS 6.6
> > Php 5.3.3
> > Apache 2.2.15
> > unixodbc 2.2.14
> > freetds 0.91
> > My Windows Server :
> > Windows Server 2012 R2
> > MS SQL Server 2014 Standard Edition
> > Here is the command line that I executed  :
> > # osql -S MyMSSQLServerName -U user -P password
> >
> > My result of this command :
> > checking shared odbc libraries linked to isql for default directories...
> > strings: '': No such file
> >  trying /tmp/sqlH ... no
> >  trying /tmp/sqlL ... no
> >  trying /etc ... OK
> > checking odbc.ini files
> >  cannot read "/root/.odbc.ini"
> >  reading /etc/odbc.ini
> > [MyMSSQLServerName] found in /etc/odbc.ini
> > found this section:
> >  [MyMSSQLServerName]
> >  Driver = /usr/lib64/libtdsodbc.so.0
> >  Description = MSSQL Server
> >  Trace = No
> >  Server = 192.168.1.32
> >  Database = mydatabase
> >  Port = 1433
> >  TDS_Version = 7.2
> >
> > looking for driver for DSN [MyMSSQLServerName] in /etc/odbc.ini
> >   found driver line: " Driver = /usr/lib64/libtdsodbc.so.0"
> >   driver "/usr/lib64/libtdsodbc.so.0" found for [MyMSSQLServerName] in odbc.ini
> > found driver named "/usr/lib64/libtdsodbc.so.0"
> > /usr/lib64/libtdsodbc.so.0 is an executable file
> > "Server" found, not using freetds.conf
> > Server is "192.168.1.32"
> > looking up hostname for ip address 192.168.1.32
> > osql: warning: no DNS hostname found for "192.168.1.32"
> > Usage: host [-aCdlriTwv] [-c class] [-N ndots] [-t type] [-W time]
> >             [-R number] [-m flag] hostname [server]
> >        -a is equivalent to -v -t ANY
> >        -c specifies query class for non-IN data
> >        -C compares SOA records on authoritative nameservers
> >        -d is equivalent to -v
> >        -l lists all hosts in a domain, using AXFR
> >        -i IP6.INT reverse lookups
> >        -N changes the number of dots allowed before root lookup is done
> >        -r disables recursive processing
> >        -R specifies number of retries for UDP packets
> >        -s a SERVFAIL response should stop query
> >        -t specifies the query type
> >        -T enables TCP/IP mode
> >        -v enables verbose output
> >        -w specifies to wait forever for a reply
> >        -W specifies how long to wait for a reply
> >        -4 use IPv4 query transport only
> >        -6 use IPv6 query transport only
> >        -m set memory debugging flag (trace|record|usage)
> > osql: no IP address found for ""
> 
> I think this is just a problem of osql, FreeTDS is able to use ip
> directly in server.
> 
> >
> > Here is my ODBC configuration
> > ====================================================================
> > /etc/odbc.ini for osql
> > [ODBC Data Sources]
> > MyMSSQLServerName=MSSQL Server
> > [MyMSSQLServerName]
> > Driver = /usr/lib64/libtdsodbc.so.0
> > Description = MSSQL Server
> > Trace = No
> > Server = 192.168.1.32
> > Database = mydatabase
> > Port = 1433
> > TDS_Version = 7.2
> 
> Looks good
> 
> > [Default]
> > Driver=/usr/lib64/libtdsodbc.so.0
> > ================================================================
> > /etc/odbcinst.ini for php
> > # Example driver definitions
> > # Driver from the postgresql-odbc package
> > # Setup from the unixODBC package
> > [PostgreSQL]
> > Description = ODBC for PostgreSQL
> > Driver  = /usr/lib/psqlodbc.so
> > Setup  = /usr/lib/libodbcpsqlS.so
> > Driver64 = /usr/lib64/psqlodbc.so
> > Setup64  = /usr/lib64/libodbcpsqlS.so
> > FileUsage = 1
> >
> > # Driver from the mysql-connector-odbc package
> > # Setup from the unixODBC package
> > [MySQL]
> > Description = ODBC for MySQL
> > Driver  = /usr/lib/libmyodbc5.so
> > Setup  = /usr/lib/libodbcmyS.so
> > Driver64 = /usr/lib64/libmyodbc5.so
> > Setup64  = /usr/lib64/libodbcmyS.so
> > FileUsage = 1
> >
> > [FreeTDS]
> > Driver = /usr/lib64/libtdsodbc.so.0
> > Setup = /usr/lib64/libtdsS.so
> > Description = MSSQL Server
> > Trace = No
> 
> > Server = 192.168.1.32
> > Database = mydatabase
> > Port = 1433
> > TDS_Version = 7.2
> 
> These 4 lines here are useless and confusing, odbcinst.ini is just for
> drivers, not connections.
> It's better to set Setup for unixODBC with same value as Driver
> (FreeTDS provide a Setup).
> 
> > =====================================================================
> > /etc/freetds.conf
> > #   $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden Exp $
> > #
> > # This file is installed by FreeTDS if no file by the same
> > # name is found in the installation directory.
> > #
> > # For information about the layout of this file and its settings,
> > # see the freetds.conf manpage "man freetds.conf".
> > # Global settings are overridden by those in a database
> > # server specific section
> > [global]
> >         # TDS protocol version
> > ; tds version = 4.2
> >  # Whether to write a TDSDUMP file for diagnostic purposes
> >  # (setting this to /tmp is insecure on a multi-user system)
> > ; dump file = /tmp/freetds.log
> > ; debug flags = 0xffff
> >  # Command and connection timeouts
> > ; timeout = 10
> > ; connect timeout = 10
> >
> >  # If you get out-of-memory errors, it may mean that your client
> >  # is trying to allocate a huge buffer for a TEXT field.
> >  # Try setting 'text size' to a more reasonable limit
> >  text size = 64512
> > # A typical Sybase server
> > [egServer50]
> >  host = symachine.domain.com
> >  port = 5000
> >  tds version = 5.0
> > # A typical Microsoft server
> > [egServer70]
> >  host = ntmachine.domain.com
> >  port = 1433
> >  tds version = 7.0 ## I added theses lines below
> > # MSSQL ServerName
> > [MyMSSQLServerName]
> >     host = 192.168.1.32
> >     port = 1433
> >     tds version = 7.0
> >     # client charset = UTF-8
> > ====================================================================================
> > ========
> >
> > My connection string in php file :
> > Driver=FreeTDS;Server=192.168.1.32;Database=mydatabase;
> >
> 
> You should use DSN here to refer the entry you configured in odbc.ini.
> Also you should try with isql tools to connect.
> 
> Something like "DSN=MyMSSQLServerName;UID=user;PWD=password;"
> replacing user and password. You need either to provide a
> username/password or setup Kerberos.
> 
> > Another information about CentOS, I disabled SELinux .
> > The osql searches DNS hostname from the IP address that I given but it didn't find.
> >
> > I don't know if the connection problem from php to SQL Server is due by the lookup DNS problem from the IP address.
> >
> > I would like to know what should I do to resolve this connection problem ?
> >
> > Thank you for your response.
> >
> > Best regards.
> >
> 
> Frediano
> _______________________________________________
> FreeTDS mailing list
> [email protected]
> http://lists.ibiblio.org/mailman/listinfo/freetds
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.