Pregunta

Yo era la creación de una tabla en SQL Server CE y se dio cuenta de que no es compatible con varchar.

Viendo esto, me encontré con que "no Unicode columnas de texto (varchar, char, texto) y smallmoney no son compatibles;aunque nvarchar, nchar, ntext, y el dinero son compatibles" como declaró en MSDN.

¿Es esto cierto?¿Por qué es esto, exactamente?Parece que un compacto base de datos de soporte de tipos de datos que tomar menos bytes para almacenar...estoy suponiendo que se necesita más espacio para guardar los caracteres Unicode.

¿Cuál es el razonamiento detrás de esto?

¿Fue útil?

Solución

Es probablemente porque Windows CE se basa completamente Unicode y todos Es cadenas se almacenan de esa manera.

Otros consejos

Creo que estaban tratando de reducir su huella de despliegue y simplificar la interfaz. Eso y, probablemente, tratando de evitar tener que desplegar más versiones de los archivos DLL (Unicode vs versiones que no son Unicode).

Y sí es cierto que sólo son compatibles con Unicode.

Pero eso no significa automáticamente que se necesita 2 bytes para almacenar. Puede codificar que en la capa de base de datos para despojar básicamente el primer byte cuando no se necesita. Muchos motores de bases de datos hacen esto como un medio de compresión en Unicode.

Sólo significa que las entradas que no utilizan el sistema de dos byte tienen una ligera sobrecarga de un marcador adicional contando el motor que la secuencia está utilizando dos bytes. De lo contrario un solo byte todavía se puede almacenar en el disco, y se expandió como una parte de la RowData leer.

La mayoría de las bases de datos compactas siempre utilizan una forma de compresión de longitud de recorrido cuando en realidad ponen bytes en el disco con el fin de ahorrar espacio. El formato llegan a ver en lo que se refiere a cabo desde el motor rara vez coincide con lo que realmente se almacena en el disco.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top