title: Cannot connect to SQL Server database using pymssql but can connect using underlying freetds tsql
body: <p>I have no idea why I am getting this error and cannot find any solutions for it. I can connect to a SQL Server database using freetds tsql but I keep getting an error when connecting using <code>pymssql.connect</code>. </p>
  
  <p>The specific error is:</p>
  
  <blockquote>
    <p>pymssql.OperationalError: (18456, "Login failed for user 'xxx'.DB-Lib error message    18456, severity 14:\nGeneral SQL Server
    error: Check messages from the SQL Server\nDB-Lib error message 20002,
    severity 9:\nAdaptive Server connection failed\n")</p>
  </blockquote>
  
  <p>I have the configuration set for freetds as:</p>
  
  <pre><code>[custom_config]
      host = myhost
      port = 1433
      tds version = 7.0
      encryption = request
      dump file = /tmp/freetds.log
  </code></pre>
  
  <p>running:</p>
  
  <pre><code>tsql -S custom_config -U tsmv -P xxx
  </code></pre>
  
  <p>returns:</p>
  
  <pre><code>locale is "en_US.UTF-8"
  locale charset is "UTF-8"
  using default charset "UTF-8"
  1&gt;
  </code></pre>
  
  <p>which allows me to query the database.</p>
  
  <p>However, running:</p>
  
  <pre><code>python
  &gt;&gt; import pymssql
  &gt;&gt; pymssql.connect(server='custom_config', user='user', password='xxx',    database='database')
  </code></pre>
  
  <p>raises the above error.</p>
  
  <p>I am using Linux CentOS, python 2.6.6, freetds 0.92 dev (I have tried other versions compiling with tdsver=7.0).</p>
  
  <p>The freetds log is:</p>
  
  <pre><code>log.c:196:Starting log file for FreeTDS 0.92
  on 2012-04-12 10:39:15 with debug flags 0x4fff.
  iconv.c:330:tds_iconv_open(0x1391b70, ISO-8859-1)
  iconv.c:187:local name for ISO-8859-1 is ISO-8859-1
  iconv.c:187:local name for UTF-8 is UTF-8
  iconv.c:187:local name for UCS-2LE is UCS-2LE
  iconv.c:187:local name for UCS-2BE is UCS-2BE
  iconv.c:349:setting up conversions for client charset "ISO-8859-1"
  iconv.c:351:preparing iconv for "ISO-8859-1" &lt;-&gt; "UCS-2LE" conversion
  iconv.c:391:preparing iconv for "ISO-8859-1" &lt;-&gt; "UCS-2LE" conversion
  iconv.c:394:tds_iconv_open: done
  net.c:205:Connecting to xx.x.x.xxx port 1433 (TDS version 7.1)
  net.c:270:tds_open_socket: connect(2) returned "Operation now in progress"
  net.c:310:tds_open_socket() succeeded
  util.c:156:Changed query state from DEAD to IDLE
  net.c:741:Sending packet
  0000 12 01 00 34 00 00 00 00-00 00 15 00 06 01 00 1b |...4.... ........|
  0010 00 01 02 00 1c 00 0c 03-00 28 00 04 ff 08 00 01 |........ .(......|
  0020 55 00 00 02 4d 53 53 51-4c 53 65 72 76 65 72 00 |U...MSSQ LServer.|
  0030 c7 39 00 00            -                        |.9..|
  
  net.c:555:Received header
  0000 04 01 00 25 00 00 01 00-                        |...%....|
  
  net.c:609:Received packet
  0000 04 01 00 25 00 00 01 00-00 00 15 00 06 01 00 1b |...%.... ........|
  0010 00 01 02 00 1c 00 01 03-00 1d 00 00 ff 0a 00 0f |........ ........|
  0020 a0 00 00 02 00         -                        |.....|
  
  login.c:1057:detected flag 2
  login.c:782:quietly sending TDS 7+ login packet
  token.c:328:tds_process_login_tokens()
  net.c:555:Received header
  0000 04 01 00 72 00 51 01 00-                        |...r.Q..|
  
  net.c:609:Received packet
  0000 04 01 00 72 00 51 01 00-aa 5e 00 18 48 00 00 01 |...r.Q.. .^..H...|
  0010 0e 1d 00 4c 00 6f 00 67-00 69 00 6e 00 20 00 66 |...L.o.g .i.n. .f|
  0020 00 61 00 69 00 6c 00 65-00 64 00 20 00 66 00 6f |.a.i.l.e .d. .f.o|
  0030 00 72 00 20 00 75 00 73-00 65 00 72 00 20 00 27 |.r. .u.s .e.r. .'|
  0040 00 74 00 73 00 6d 00 76-00 27 00 2e 00 0c 4d 00 |.t.s.m.v .'....M.|
  0050 43 00 53 00 2d 00 44 00-41 00 54 00 41 00 42 00 |C.S.-.D. A.T.A.B.|
  0060 41 00 53 00 45 00 00 01-00 fd 02 00 00 00 00 00 |A.S.E... ........|
  0070 00 00                  -                        |..|
  
  token.c:337:looking for login token, got  aa(ERROR)
  token.c:122:tds_process_default_tokens() marker is aa(ERROR)
  token.c:2588:tds_process_msg() reading message 18456 from server
  token.c:2661:tds_process_msg() calling client msg handler
  dbutil.c:85:_dblib_handle_info_message(0x14e2e30, 0x1391b70, 0x7fff8b047e40)
  dbutil.c:86:msgno 18456: "Login failed for user 'xxx'."
  token.c:2674:tds_process_msg() returning TDS_SUCCEED
  token.c:337:looking for login token, got  fd(DONE)
  token.c:122:tds_process_default_tokens() marker is fd(DONE)
  token.c:2339:tds_process_end: more_results = 0
      was_cancelled = 0
      error = 1
      done_count_valid = 0
  token.c:2355:tds_process_end() state set to TDS_IDLE
  token.c:2370:                rows_affected = 0
  token.c:438:tds_process_login_tokens() returning TDS_FAIL
  login.c:466:login packet accepted
  util.c:156:Changed query state from IDLE to DEAD
  util.c:331:tdserror(0x14e2e30, 0x1391b70, 20002, 0)
  dblib.c:7929:dbperror(0x1383c70, 20002, 0)
  dblib.c:7981:20002: "Adaptive Server connection failed"
  dblib.c:8002:"Adaptive Server connection failed", client returns 2 (INT_CANCEL)
  util.c:361:tdserror: client library returned TDS_INT_CANCEL(2)
  util.c:384:tdserror: returning TDS_INT_CANCEL(2)
  dblib.c:1443:dbclose(0x1383c70)
  dblib.c:258:dblib_del_connection(0x7fa462faf540, 0x1391b70)
  mem.c:615:tds_free_all_results()
  dblib.c:305:dblib_release_tds_ctx(1)
  dblib.c:5882:dbfreebuf(0x1383c70)
  dblib.c:739:dbloginfree(0x1533a40)
  </code></pre>
  
  <p>I am completely lost as to why this is not working. Any help would be much appreciated. </p>