Because I have several unrelated resources to coordinate during commit, I would like to use two-phase commit (2PC) on Azure SQL Database, from Java code (JDBC).
On standard SQL Server, you can do a complex install of some DLL plus some scripts to make available some extended stored procedures, with names like xp_sqljdbc_xa_init or xp_sqljdbc_xa_prepare, that in turn the Microsoft JDBC driver uses to provide the XA semantics of start/end/prepare/commit. But these extended stored procedures aren’t available on Azure from what I can see.
Also, by itself, SQL Server doesn’t seem to have any PREPARE TRANSACTION primitive, and I don’t find one in Azure either.
So how can one do 2PC on Azure?
It’s not supported and in many ways incompatible with the benefits and uses cases for cloud computing. There’s an excellent blog post by Clemens Vasters that I’d recommend reading and which introduces the service bus feature as a way to accommodate the key aspects of the behavior that you may be looking for.