You can use all Transact-SQL statements in a transaction, except for the following statements:
ALTER DATABASE | DROP DATABASE | RECONFIGURE |
BACKUP LOG | DUMP TRANSACTION | RESTORE DATABASE |
CREATE DATABASE | LOAD DATABASE | RESTORE LOG |
DISK INIT | LOAD TRANSACTION | UPDATE STATISTICS |
Also, you cannot use sp_dboption to set database options or use any system procedures that modify the master database inside user-defined transactions.