partición de los valores límite, como se muestra en la documentación CREATE PARTITION FUNCTION, puede ser uno de los muchos tipos diferentes:
Todos los tipos de datos son válidos para su uso como columnas de partición, excepto text, ntext, imagen, xml , timestamp, varchar (max), nvarchar (max), varbinary (max), tipos de datos alias o CLR tipos de datos definidos por el usuario.
Y su tipo de datos real se almacena en sys.partition_parameters.
Pero si uno los está seleccionando de sys.partition_range_values, entonces el campo value
es del tipo SQL_VARIANT
(y por una buena razón, obviamente).
Sí, SQL_VARIANT
(como ya se indicó) mapas a object
en .NET.
Si necesita comprobar si hay NULL, compare el objeto con DBNull.Value
.
Si desea conocer el tipo subyacente del valor en el objeto (lo más probable es que no va a ser SQL_VARIANT
/object
), utilice el método GetType()
:
if (aVariant.GetType() == typeof(SqlInt16))
No estoy seguro de que poder. Todo lo que puedo encontrar son muchas referencias sobre cómo las diferentes API de clientes las traducen en, por ejemplo, nvarchar o columnas binarias. ¿Tiene que ser un sql_variant? –
@Damied_The_Unbeliever: sí, debe ser una sql_variant. Estoy tratando de pasar el valor de un límite para cualquier partición dada, que existe en SQL como un tipo sql_variant. – Burg
Los valores de límite para las particiones no son estrictamente sql_variants (no pueden, por ejemplo, aceptar un valor de tipo texto). No creo que realmente tengan un tipo bien definido en SQL. Buscando en las funciones de SMO para trabajar con funciones de partición, se tratan como Objeto, por lo que no creo que haya un mejor tipo .NET para ellas. –