Há algum benefício em usar sql_variant sobre varchar no SQL Server?

Eu tenho atualmente uma configuração de tabela de banco de dados da seguinte forma (EAV - motivos comerciais são válidos):

Id - int (PK)Chave - única, varchar (15)Valor - varchar (1000)

Isso me permite adicionar valores mistos ao meu banco de dados como pares chave / valor. Por exemplo:

1   | 'Some Text'      | 'Hello World'
2   | 'Some Number'    | '123456'
etc.

No meu código c # eu uso o ADO.Net usandoreader.GetString(2); para recuperar o valor como uma string, então faça com que meu código seja convertido conforme necessário, por exemplo ...Int32.ParseInt(myObj.Value);. Eu estou olhando para melhorar minha tabela, possivelmente alterando a coluna de valor para umsql_variant tipo de dados, mas não sei qual seria o benefício disso? Basicamente, existe alguma vantagem em ter minhavalor coluna ser desql_variant vsvarchar(1000)?

Para ser mais claro, eu li em algum lugar que sql_variant é retornado como nvarchar (4000) de volta para o cliente fazendo a chamada (ai)! Mas, eu não poderia lançá-lo para o tipo antes de devolvê-lo? Obviamente, meu código teria que ser ajustado para armazenar o valor como um objeto em vez de um valor de string. Eu acho, quais são as vantagens / desvantagens de usarsql_variant contra algum outro tipo na minha situação atual? Ah, e vale a pena mencionar que tudo o que planejo armazenar são datetimes, strings e tipos numéricos (int, decimal, etc) na coluna value; Eu não planejo armazenar e blob ou imagens ou etc.

questionAnswers(4)

yourAnswerToTheQuestion