The SqlDataReader class is not sealed, but you cannot inherit from it as it is not a class you can instantiate. I.e. you cannot say:
SqlDataReader sdr = new SqlDataReader();
If you think about it, it makes a lot of sense. A data reader is only used to read all the information returned from a SQL Command execution, so creating a new instance of it completely useless - it has no SQL results to read through. So, the only way you can get an instance is by requesting it from an SQLCommand by using the ExecuteReader method.
So, if you can't create an instance, why would it be possible to inherit from it? You can't create the inherited instance at all - you cannot "upgrade" a class to a derived version, as the framework would have to "invent" all the missing information.
What are you trying to achieve, that you think this would be a good idea?