SQL Server と .NET Framework は異なる型システムを使用しています。 たとえば、.NET Framework の Decimal 構造体の最大小数点以下桁数は 28 ですが、SQL Server の decimal データ型と numeric データ型の最大小数点以下桁数は 38 です。 データの読み取りと書き込み時にデータの整合性を維持するために、SqlDataReaderでは、System.Data.SqlTypesのオブジェクトを返すSQL Server固有の型指定されたアクセサー メソッドと、.NET Framework 型を返すアクセサー メソッドが公開されます。 SQL Server の型と .NET Framework の型は、両方とも DbType および SqlDbType クラスの列挙によって表されます。これらは SqlParameter データ型を指定するときに使用できます。
推論される .NET Framework 型、DbType 列挙型と SqlDbType 列挙型、SqlDataReader のアクセサー メソッドを、次の表に示します。
1DbType の SqlParameter プロパティを SqlDbType.Date に設定することはできません。
2sql_variant の基になる型がわかっている場合は、特定の型指定されたアクセサーを使用してください。
SQL Server ドキュメント
SQL Server のデータ型について詳しくは、「データ型 (Transact-SQL)」をご覧ください。