Pregunta 1: ¿Cómo entran en juego los 8000 personajes y dónde debo estar al tanto?
Establecer n en 8000 hace que entren en juego 8000 personajes. Debe conocer las referencias de Precisión, Escala y Longitud (Transact-SQL) sobre char, nchar, nvarchar y varchar. Por el contrario, establecer n en max (sin comillas) hace que SQL Server almacene (y devuelva) el número máximo de bytes (como se menciona en su cotización).
Pregunta 2: ¿una consulta de lector de datos .net a esta columna siempre devolverá el resultado completo con más de 100 000 caracteres?
Esta es una pregunta .Net (no un servidor SQL), pero el lector de datos .Net obtiene una secuencia de bytes. Un byte no es un carácter y SQL Server devuelve bytes (no caracteres). Si n se establece en 8000 y el tipo de datos es nvarchar, SQL Server devuelve hasta 8000 bytes, que el lector de datos .Net puede interpretar como 4000 caracteres Unicode. Si n se establece en 8000 y el tipo de datos es varchar, SQL Server devuelve hasta 8000 bytes, que el lector de datos .Net puede interpretar como hasta 8000 caracteres ANSI. Si n se establece en max y el tipo de datos es nvarchar, SQL Server devuelve hasta 2 ^ 31-1 bytes, que el lector de datos .Net puede interpretar en hasta (2 ^ 31-1) / 2 caracteres. Si n se establece en max y el tipo de datos es varchar, SQL Server devuelve hasta 2 ^ 31-1 bytes, que el lector de datos .Net puede interpretar como hasta 2 ^ 31-1 caracteres ANSI.
Si elige usar char o varchar (en lugar de nchar o nvarchar) porque pueden almacenar más "caracteres" (más exactamente: bytes), debe tener en cuenta que muchos caracteres Unicode no tienen caracteres ANSI equivalentes (por lo tanto, una gran parte de nuestro los usuarios del mundo no podrán ver sus caracteres localizados / nativos en su aplicación).
varchar(max)
una vez se llamótext
y se trató como un tipo de datos diferente.