Does ADOdb MSSQL driver solve this problem whereas the standard mssql_* functions don't? I thought ADOdb was just an abstraction layer, but perhaps there are some different mechanisms or settings it uses that resolve the issue I'm having? ________________________________ From: Aspen Olmsted [mailto:aspen.olmsted@xxxxxxxxxxxx] Sent: Monday, October 09, 2006 12:55 PM To: Mike Matz; php-windows@xxxxxxxxxxxxx Subject: re: SPAM-LOW: Unicode data w/ PDO DBLIB, MSSQL I think I have reported the problem you are having with the odbc and pdo and sql server under bug 38834. http://bugs.php.net/bug.php?id=38834 It should up to me with large columns of text but my guess is the same. As a temporary solution I am using adodb with sql server but there is a bug with time zones which I have a modified version of adbdb if you want it. Aspen Olmsted Alliance Software Corporation 17 Pitt St Charleston SC, 29401 aspen.olmsted@xxxxxxxxxxxx ________________________________ From: "Mike Matz" <mmatz@xxxxxxxxxxxxx> Sent: Monday, October 09, 2006 12:48 PM To: php-windows@xxxxxxxxxxxxx Subject: SPAM-LOW: Unicode data w/ PDO DBLIB, MSSQL Is there currently any way to retrieve Unicode data from SQL Server? I'm working with SQL Server Express 2005, on a database that's been restored from an old SQL Server 2000 database. I'm writing a PHP script that imports data from the MSSQL database, processes it, and adds it to a MySQL database with a different schema. So far I've been unable to do this reliably, as there is a lot of multilingual, Unicode data in the MSSQL database. I'm trying to use the PDO method of database access, but could fall back on another method if this is impossible. I'm able to connect to my database using either ODBC or DBLIB MSSQL drivers. When using DBLIB, I get an error: $db = new PDO('mssql:host=\\\\.\pipe\sql\query;dbname=my_db', $user, $pass); $sth = $db->execute("SELECT * FROM Products"); $sth->execute(); print_r($sth->fetchAll()); gives me this exception: Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 10007 Unicode data in a Unicode-only collation or ntext data cannot be sent to clients using DB-Library (such as ISQL) or ODBC version 3.7 or earlier. [10007] (severity 5) [(null)]' When using ODBC, I get very strange results. There are no errors or exceptions, but in every row, all columns following the first text/unicode column will be empty. For example, if I SELECT Product_ID, Short_Description, Product_Season (Short_Description being TEXT, possibly with unicode), Product_Season will be empty. However, if I SELECT Product_ID, Product_Season, Short_Description -- I'll get the Product_Season. Short_Description is empty in both cases (even if it's not empty when viewing with SQL Query Analyzer). Has anyone seen this behavior or have any ideas as to what I should try? Thanks, Mike