Don't use empty here

As a convention it usually applies to a single empty instance (as
DBNull, Guid etc)
No reason for this to be public
More standard way of defining a None option
Always use StringComparison.OrdinalIgnoreCase
Use static SqlQuery for SelectIdentityQuery

The value is always the same so no need to add GC pressure by creating a
new SqlQuery each time.
No need to re-number the first command

It should always be @p0 onwards
No need to add a linebreak just to ignore it
Cater for the statement separator

Should prevent the StringBuilder from having to resize