Something like this should give you the 30 last primary keys

Code:
Select Top 30 PriKeyCol From SomeTable Order by PriKeyCol Desc
Can you get something like that to work??

Then you put that in a derived query:

Code:
Select Min(Q1.PriKeyCol) From
     (Select Top 30 PriKeyCol From SomeTable Order by PriKeyCol Desc) as Q1
This should return the "first" of those 30 primary key values - if you have less then 30 - it should still work.

Then it's as simple as:

Code:
Select * From SomeTable
    Where PriKeyCol>=(Select Min(Q1.PriKeyCol) From
     (Select Top 30 PriKeyCol From SomeTable Order by PriKeyCol Desc) as Q1)