首页 > 解决方案 > 查询多个 Azure SQL 数据库 - Azure SQL 数据库不能用作中央管理服务器

问题描述

我需要对所有数据库(具有相同架构)运行查询,问题是这些是弹性池中的 Azure 数据库。我读到这可以使用 SQL Management Studio 中的“中央管理服务器”功能来完成,但我已经安装了最新版本 18.3,但是当我尝试在“中央管理服务器”下扩展 Azure SQL 服务器时,我收到以下错误:

Azure SQL 数据库不能用作中央管理服务器

我尝试对所有数据库运行的查询类型如下,这在本地 SQL Server 实例上运行良好,但在 Azure SQL Server 上不起作用。

SET NOCOUNT ON;

IF OBJECT_ID (N'tempdb.dbo.#temp') IS NOT NULL
   DROP TABLE #temp

CREATE TABLE #temp
(
      [COUNT] INT
    , DB VARCHAR(50)
)

DECLARE @TableName NVARCHAR(50) 
SELECT @TableName = '[dbo].[CustomAttributes]'

DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = STUFF((
    SELECT CHAR(13) + 'SELECT ''' + name + ''', COUNT(1) FROM [' + name + '].' + @TableName + 'WHERE dataType = 2'
    FROM sys.databases 
    WHERE OBJECT_ID('[' + name + ']' + '.' + @TableName) IS NOT NULL
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')

INSERT INTO #temp (DB, [COUNT])              
EXEC sys.sp_executesql @SQL

SELECT * 
FROM #temp t

标签: sqlsql-serverazure-sql-databasessms

解决方案


Azure SQL 数据库不支持使用中央管理服务器管理多个服务器

在此处输入图像描述

由于您的数据库位于同一个弹性池中,因此您可以使用弹性查询对所有数据库运行查询。

弹性查询功能(预览版)使您能够运行跨 Azure SQL 数据库中的多个数据库的 Transact-SQL 查询。它允许您执行跨数据库查询以访问远程表,并连接 Microsoft 和第三方工具(Excel、Power BI、Tableau 等)以跨多个数据库的数据层进行查询。使用此功能,您可以将查询扩展到 SQL 数据库中的大型数据层,并在商业智能 (BI) 报告中可视化结果。

更多详细信息,请参见T-SQL 查询

  1. 跨横向扩展云数据库的报告(预览)
  2. 跨具有不同架构的云数据库查询(预览)

希望这可以帮助。


推荐阅读