trouble with UTF-8 input data with mssql_bind

Tomasz Kurkiewicz <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
Hi,


I'm using FreeTDS 0.82 to execute a stored procedure on a MS SQL Server 
2005. Unfortunately, I keep getting error messages while executing a 
stored procedure using mssql_bind.
Web server is Fedora 8, PHP 5.3.0, freetds 0.82, database server is 
called MSSQL.


While using the syntax:

EXECUTE  [procedure name] [parameter values with leading N when any 
varchar data]

Everything goes OK.
Client encoding is UTF-8, parameters are all nvarchars, it fails on a 
first nvarchar parameter (look at freetds.log).

freetds.log says:
"Error converting characters into server's character set. Some 
character(s) could not be converted"
"The incoming tabular data stream (TDS) remote procedure call (RPC) 
protocol stream is incorrect. Parameter 2 ("@user_agent"): Data type 
0xA7 has an invalid data length or metadata length."

I have searched through the internet, but I found no solution, how to 
get it working by using mssql_bind() function. If any of you could help, 
I'll be grateful. If you'd like to have more information, please ask, 
I'll try to post it.


With regards,
Tomasz Kurkiewicz



Further information:

(ADODB error output):

(mssql): select @@TRANCOUNT  
------------------------------------------------------------------------
------------------------------------------------------------------------
(mssql): SET TRANSACTION ISOLATION LEVEL SERIALIZABLE  
------------------------------------------------------------------------
------------------------------------------------------------------------
(mssql): SET DATEFORMAT ymd  
------------------------------------------------------------------------
------------------------------------------------------------------------
(mssql): BEGIN TRAN  
------------------------------------------------------------------------
InParameter($stmt, $php_var='3237686', $name='id_uzytkownika', 
$maxLen=4000, $type=56);
InParameter($stmt, $php_var='Mozilla/5.', $name='user_agent', 
$maxLen=110, $type=39);
InParameter($stmt, $php_var='windows', $name='os', $maxLen=4000, $type=39);
InParameter($stmt, $php_var='firefox 3.x', $name='browser', 
$maxLen=4000, $type=39);
InParameter($stmt, $php_var='1680x1050', $name='resolution', 
$maxLen=4000, $type=39);
InParameter($stmt, $php_var='1,5', $name='javascript', $maxLen=4000, 
$type=39);
InParameter($stmt, $php_var='1', $name='dhtml', $maxLen=4000, $type=56);
InParameter($stmt, $php_var='1', $name='dom', $maxLen=4000, $type=56);
InParameter($stmt, $php_var='', $name='sidebar', $maxLen=4000, $type=39);
InParameter($stmt, $php_var='20090824', $name='gecko', $maxLen=4000, 
$type=39);
InParameter($stmt, $php_var='', $name='svg', $maxLen=4000, $type=39);
InParameter($stmt, $php_var='1', $name='css2', $maxLen=4000, $type=56);
InParameter($stmt, $php_var='1', $name='ajax', $maxLen=4000, $type=56);
InParameter($stmt, $php_var='1', $name='popups_disabled', $maxLen=4000, 
$type=56);
InParameter($stmt, $php_var='', $name='cache_ssl_downloads', 
$maxLen=4000, $type=39);
------------------------------------------------------------------------
(mssql): sp_log_user_agent  
------------------------------------------------------------------------

*Warning*: mssql_execute() [function.mssql-execute 
<https://192.168.1.56/adodb_test/function.mssql-execute>]: message: The 
incoming tabular data stream (TDS) remote procedure call (RPC) protocol 
stream is incorrect. Parameter 2 ("@user_agent"): Data type 0xA7 has an 
invalid data length or metadata length. (severity 16) in 
*/var/www/include/adodb/drivers/adodb-mssql.inc.php* on line *769*

*Warning*: mssql_execute() [function.mssql-execute 
<https://192.168.1.56/adodb_test/function.mssql-execute>]: General SQL 
Server error: Check messages from the SQL Server (severity 16) in 
*/var/www/include/adodb/drivers/adodb-mssql.inc.php* on line *769*

*Warning*: mssql_execute() [function.mssql-execute 
<https://192.168.1.56/adodb_test/function.mssql-execute>]: stored 
procedure execution failed in 
*/var/www/include/adodb/drivers/adodb-mssql.inc.php* on line *769*
8016: The incoming tabular data stream (TDS) remote procedure call (RPC) 
protocol stream is incorrect. Parameter 2 ("@user_agent"): Data type 
0xA7 has an invalid data length or metadata length.



freetds.conf:

[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 = 2147483648
        client charset = utf-8

[MSSQL]
        host = 192.168.1.7
        port = 1433
        tds version = 7.0
        client charset = UTF-8


freetds.log I've uploaded to http://www.rw-online.pl/freetds.log
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.