The "ddl in tran" options needs to be "on" in the temporary databases as well. The system administrator or someone with sa_role can do this:
1> use master
2> go
1> sp_dboption tempdb, 'ddl in tran', 'true'
2> go
Warning: Attempting to change database options for a temporary database. Database options must be kept consistent across all temporary databases.
Database option 'ddl in tran' turned ON for database 'tempdb'.
Running CHECKPOINT on database 'tempdb' for option 'ddl in tran' to take effect.
(return status = 0)
As the warning suggests this needs to be consistent across all temporary databases if you have multiple. Once the command has completed the options can be checked with sp_helpdb:
1> sp_helpdb
2> go
[stuff deleted]
tempdb 104.0 MB sa 2 Aug 05, 2019 no_recovery 0 NULL
select into/bulkcopy/pllsort, trunc log on chkpt, ddl in tran, mixed log and data, allow wide dol rows
Here's an example of creating a table inside a transaction:
1> use tempdb
2> go
1> begin tran
2> go
1> create table foo ( k int not null, value varchar(25) null)
2> go
1> commit
2> go
1>