列出 Azure SQL 服务器中所有弹性池的 T-SQL 是什么?

What is the T-SQL to list all elastic pools in an Azure SQL Server?

我有不止一台 Azure SQL 服务器,每台服务器可能至少包含一个 SQL 弹性池。我正在尝试构建一个 SQL 脚本,该脚本可以在这些服务器中的任何一个和 select 该服务器上的可用池之一上执行 CREATE DATABASE 语句。为此,我想知道 T-SQL 语句,它会列出该服务器上所有可用的弹性池。我发现下面的 SQL 将列出服务器上的所有数据库以及它们在哪个池中:

SELECT d.database_id, d.name, elastic_pool_name
FROM sys.databases d
JOIN sys.database_service_objectives dso ON d.database_id = dso.database_id

但是,这仅在新服务器上 returns master,所以我不知道池名称是什么,无法在服务器上的池中创建新数据库。我还找到了 list all elastic pools on a server 的 REST API 端点,但我需要在 SQL 中执行此操作,而不是通过 HTTP。

您可以从sys.elastic_pool_resource_stats

获取服务器上的弹性池列表
select distinct @@servername as servername, elastic_pool_name from sys.elastic_pool_resource_stats