Try to see why you have a lock in the table.
Use:
sp_lock
or this select:
Use <my_database>
go
SELECT substring(db_name(master..syslocks.dbid),1,15) db_name,
object_name(master..syslocks.id)tablename,
master..syslocks.row,
master..syslocks.page,
tipo =
CASE
WHEN master..syslocks.type = 1 THEN "Exclusive table lock"
WHEN master..syslocks.type = 2 THEN "Shared table lock"
WHEN master..syslocks.type = 3 THEN "Exclusive intent lock"
WHEN master..syslocks.type = 4 THEN "Shared intent lock"
WHEN master..syslocks.type = 5 THEN "Exclusive page lock"
WHEN master..syslocks.type = 6 THEN "Shared page lock"
WHEN master..syslocks.type = 7 THEN "Update page lock"
WHEN master..syslocks.type = 8 THEN "Exclusive row lock"
WHEN master..syslocks.type = 9 THEN "Shared row lock"
WHEN master..syslocks.type = 10 THEN "Update row lock"
WHEN master..syslocks.type = 11 THEN "Shared next key lock"
WHEN master..syslocks.type = 256 THEN "Lock is blocking another process"
WHEN master..syslocks.type = 512 THEN "Demand lock"
END,
master..syslocks.type,
master..syslocks.class,
master..syslocks.context,
master..syslocks.spid,
master..syslocks.fid,
master..syslocks.loid
FROM master..syslocks
WHERE master..syslocks.dbid = db_id()
ORDER BY master..syslocks.spid
go
If you have a transaction open and you make an insert, update or delete, then you will have to commit or rollback the transaction before drop the table.
Sometimes Sybase lose locks with phantom process, but that is an exception.
Intead of drop and create the table, You can try truncate table.
Bye
Sebastian