valeurs limites de la partition, comme indiqué dans la documentation CREATE PARTITION FUNCTION, peut être l'un des nombreux types différents:
Tous les types de données sont valables pour une utilisation en tant que colonnes de séparation, à l'exception du texte, ntext, image, xml , horodatage, varchar (max), nvarchar (max), varbinary (max), types de données d'alias ou types de données définis par l'utilisateur CLR.
Et leur type de données actuel est stocké dans sys.partition_parameters.
Mais si on les sélectionne sur sys.partition_range_values, alors le champ value
est de type SQL_VARIANT
(et pour cause, évidemment).
Oui, SQL_VARIANT
(comme indiqué précédemment) correspond à object
dans .NET.
Si vous devez rechercher des valeurs NULL, comparez l'objet à DBNull.Value
.
Si vous voulez connaître le type de la valeur sous-jacente de l'objet (le plus ne va probablement SQL_VARIANT
/object
), utilisez la méthode GetType()
:
if (aVariant.GetType() == typeof(SqlInt16))
Je ne suis pas sûr que vous pouvez. Tout ce que je peux trouver, c'est beaucoup de références à la façon dont différentes API client les traduisent en e.g. nvarchar ou colonnes binaires. Est-ce que ça doit être un sql_variant? –
@Damied_The_Unbeliever: oui, ce doit être un sql_variant. J'essaie de transmettre la valeur d'une frontière pour une partition donnée, qui existe dans SQL en tant que type sql_variant. – Burg
Les valeurs limites pour les partitions ne le sont pas, strictement sql_variants (elles ne peuvent pas, par exemple, accepter une valeur de type text). Je ne pense pas qu'ils ont un type bien défini en SQL. En regardant dans les fonctions SMO pour travailler avec les fonctions de partition, ils sont traités comme des objets, donc je ne crois pas qu'il existe un meilleur type de .NET pour eux. –