Re: Unable to query MSSQL server using freetds
Frediano Ziglio <[email protected]>
| Newsgroups | gmane.comp.db.tds.freetds |
|---|---|
| Message-ID | <[email protected]> |
2010/9/28 Belden, Alvin (H USA) <[email protected]> > Hi All, > > We are trying to port our applications that currently use Ct Lib/Sybase to > Sql Server using the Ct lib supplied by FreeTds. We are able to connect to > and switch databases but fail to query. We're running the following > versions: > > Linux (application (C++) server) - Red Hat Enterprise Linux Server release > 5.4 (Tikanga) > FreeTds - 082 > MSSQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) > > The problem with the query seems to be (from the dump below) that the > single parameter to stored procedure get_users_info, being passed as RADRAD > is truncated to RADR. I have tried different parameter strings but whatever > I pass appears from the dump to be truncated and therefore returns nothing. > I have also tried making the parameter larger than the actual field in the > table in the hope that the truncation would result in a match. Running in > Isql, I can run the same stored procedure and it works fine. > > Below is the tdsdump running from a C++ application. After that, is the > dump running the same stored proc from Isql. Appreciate any help. > > > ... > token.c:2232: rows_affected = 0 > util.c:110:logic error: cannot change query state from IDLE to PENDING > ct.c:1157:ct_results() process_result_tokens returned 1 (type 4052) > ct.c:1262:ct_results() results state = 0 > ct.c:1263:ct_results() command type = 148 > ct.c:1264:ct_results() dynamic cmd = 0 > ct.c:1100:ct_results() > ct.c:682:ct_command() > ct.c:215:setting command state from SENT to IDLE > ct.c:215:setting command state from IDLE to IDLE > ct.c:766:ct_command() added rpcname "get_users_info" > ct.c:215:setting command state from IDLE to READY > ct.c:3358:ct_param() > ct.c:3359:ct_param() data addr = 0xbfdd29fe data length = 6 > ct.c:4324: _ct_fill_param() status = 256 > ct.c:2003:_ct_get_server_type(0) > type == 0 ?? could you send some source code that calls ctlib ?? > ct.c:3390: ct_param() added rpc parameter @user_init > ct.c:844:ct_send() command_type = 149 > ct.c:4239:paraminfoalloc: status = 256, maxlen 0 > ct.c:4240:paraminfoalloc: name = @user_init, varint size 2 column_type 47 > size 6, 6 column_cur_size 6 column_output = 0 > ct.c:4079:paramrowalloc, size = 6, data = 0xa4cb450, row_size = 0 > mem.c:563:tds_free_all_results() > util.c:162:Changed query state from IDLE to QUERYING > query.c:1292:tds_put_data_info putting param_name > query.c:1326:tds_put_data_info putting status > query.c:1420:tds_put_data: colsize = 6 > query.c:1449:tds_put_data: not null param varint_size = 2 > util.c:162:Changed query state from QUERYING to PENDING > net.c:779:Sending packet > 0000 03 01 00 4e 00 00 01 00-0e 00 67 00 65 00 74 00 |...N.... ..g.e.t.| > 0010 5f 00 75 00 73 00 65 00-72 00 73 00 5f 00 69 00 |_.u.s.e. r.s._.i.| > 0020 6e 00 66 00 6f 00 00 00-0a 40 00 75 00 73 00 65 |n.f.o... [email protected]| > 0030 00 72 00 5f 00 69 00 6e-00 69 00 74 00 00 af 06 |.r._.i.n .i.t....| > 0040 00 09 04 d0 00 34 06 00-06 00 52 41 44 52 |.....4.. ..RADR| > > is not truncated, it seems garbled. Instead of "RADRAD" it sends "RADR" with 2 bytes (06 00) before. freddy77