¿Por qué la columna TEXT devuelve solo 4096 bytes?

Estoy almacenando un texto largo con mssql_query ();

Y usar el campo con el tipo de datos llamado ‘texto’.

Intenté con diferentes cadenas largas utilizando str_repeat (), la página tarda mucho tiempo, pero al final envía el resultado. Sin embargo, cuando recupero el resultado, obtengo solo 4096 bytes nomatterwhat. Traté de recuperar el valor con Management Studio también, y obtiene el mismo resultado.

Me parece un problema de almacenamiento. Por favor consejo algo … Estoy confundido.

EDIT para estos que preguntaron, esto es lo que estoy usando:

function sql_escape($sql) { /* De MagicQuotes */ $fix_str = stripslashes($sql); $fix_str = str_replace("'","''",$sql); $fix_str = str_replace("\0","[NULL]",$fix_str); return "'".$fix_str."'"; } $query=mssql_query('update prod_cat set htmlbottom='.sql_escape(str_repeat('\'choose_cat ', 122000)). ' where ID=1' ); $query=mssql_query('select htmlbottom from prod_cat where ID=1'); $a=mssql_fetch_assoc($query); echo strlen($a['htmlbottom']); 

El controlador PHP de Microsoft (para referencia): http://www.microsoft.com/en-us/download/details.aspx?id=20098

Pero si no desea (o no puede) cambiar los controladores, desde este sitio :

 You need to increase the maximum size of a text column to be returned from SQL Server by PHP. You can do this with a simple SQL query: SET TEXTSIZE 2147483647 Which you can run with the following PHP (best run just after you make a connection). mssql_query("SET TEXTSIZE 2147483647"); A better way to work around the issue is to change the "textlimit" and "textsize" settings within php.ini, like so: mssql.textlimit = 2147483647 mssql.textsize = 2147483647 

Su controlador MSSQL está truncando el texto. Si no puede cambiar los tipos de datos, los controladores, etc., esto debería solucionar el problema.