Cita: y en la base de datos defino los campos como Text, con tamaño 16 (no me dejar cambiarlo).
Hola... no te deja cambiarlo porque un campo ntext o text es de 16 bytes, que puede almacenar hasta 2gb de informacion ..pero como es que lo guarda..?

pues ocurre ni más ni menos que SQL Server almacena estos tipos de datos fuera de de la fila de datos, conteniendo en su lugar un puntero de texto de 16 bytes que apunta al nodo raíz de un árbol compuesto de punteros internos que asignan las páginas en las que se almacenan los fragmentos de la cadena, así que checa bien si estas guardando correctamente porque esa en la longitud de un text ó ntext.
Saludos