A. First you need to generate a random number - this assumes that you have some sort of numeric primary key on the table in the first place. Use something like :-

SELECT @NUM = RAND( (DATEPART(mm, GETDATE()) * 100000 )
+ (DATEPART(ss, GETDATE()) * 1000 )
+ DATEPART(ms, GETDATE()) )

(You could also use another variable like @@IDLE or @@CPU_BUSY to generate "random" numbers)

select @PK = min (col1) + (max (col1) - min (col1)) * @NUM

select * from <tbl> where col1 = @PK

Another way (courtesy of Joe Celko/Itzik Ben-Gan :-

SELECT S1.key_col
FROM SomeTable AS S1, SomeTable AS S2
WHERE S1.key_col <= S2.key_col
GROUP BY S1.key_col
HAVING COUNT(S2.key_col) =
(SELECT COUNT(*)
FROM SomeTable AS S3) * RAND() + 1;