I found the below SQL script over at stackoverflow:
SELECT * FROM [dbo].[tableName] WITH (TABLOCKX, HOLDLOCK)
It will select everything from a table with an exclusive lock (using TABLOCKX) and it will hold the lock until the end of the transaction (using HOLDLOCK).
We can extend this by using
BEGIN TRANSACTION SELECT * FROM [dbo].[tableName] WITH (TABLOCKX, HOLDLOCK) WHERE 0 = 1 WAITFOR DELAY '00:09' END TRANSACTION
The above will select 0 rows from the table (WHERE 0 = 1, which always evaluates false) and will hold an exclusive lock on the selected table for 9 minutes (using WAITFOR DELAY).
Practically, this can be useful for testing anything which may throw an exception in SQL. For instance, when testing a bulk insert which inserts hundreds of thousands of rows may take some time, especially if other transactions are taking place simultaneously, a table lock can simulate what would happen if the query timed out in a production environment.