Can T-SQL store ulong's?
This should answer your question:
http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/ff08c190-a981-4896-9542-3f64b95a84a2/
You would use BigInt, you just have to be careful in how you convert the signed type back into an unsigned type in C#
// This has not been tested
unchecked
{
myUlong = myDataReader.GetInt64(...);
}
...
The other possibility is to use VarBinary with a length of 8, then convert the bytes to a ulong in C#
I know it's not the same, but would this do:
select convert(decimal(38, 0), 12345678901234567890123456789012345678)
The maximum for an unsigned long seems to be 18,446,744,073,709,551,615 which is significantly less than this decimal can store. There might be issues converting, but I'm sure that a couple of wrapper functions in your application would sort it pretty quickly.