¿Hay algún beneficio al usar sql_variant sobre varchar en SQL Server?

Actualmente tengo una configuración de tabla de base de datos de la siguiente manera (EAV - razones comerciales son válidas):

Id - int (PK)Llave - único, varchar (15)Valor - Varchar (1000)

Esto me permite agregar valores mixtos en mi base de datos como pares clave / valor. Por ejemplo:

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

En mi código C # utilizo ADO.Net usandoreader.GetString(2); para recuperar el valor como una cadena, luego haga que mi código en otro lugar lo convierta según sea necesario, por ejemplo ...Int32.ParseInt(myObj.Value);. Estoy buscando mejorar mi tabla posiblemente cambiando la columna de valor a unasql_variant tipo de datos, pero no sé cuál sería el beneficio de esto? Básicamente, ¿hay alguna ventaja de tener mivalor columna sea desql_variant vsvarchar(1000)?

Para ser más claros, leí en algún lugar que sql_variant se devuelve como nvarchar (4000) al cliente que realiza la llamada (ouch). Pero, ¿no podría convertirlo en su tipo antes de devolverlo? Obviamente, mi código debería ajustarse para almacenar el valor como un objeto en lugar de un valor de cadena. Supongo, ¿cuáles son las ventajas / desventajas de usarsql_variant ¿Contra algún otro tipo en mi situación actual? Ah, y vale la pena mencionar que todo lo que planeo almacenar son tiempos de datos, cadenas y tipos numéricos (int, decimal, etc.) en la columna de valores; No planeo almacenar y blob o imágenes o etc.

Respuestas a la pregunta(4)

Su respuesta a la pregunta