sql - 查询多个 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
解决方案
Azure SQL 数据库不支持使用中央管理服务器管理多个服务器。
由于您的数据库位于同一个弹性池中,因此您可以使用弹性查询对所有数据库运行查询。
弹性查询功能(预览版)使您能够运行跨 Azure SQL 数据库中的多个数据库的 Transact-SQL 查询。它允许您执行跨数据库查询以访问远程表,并连接 Microsoft 和第三方工具(Excel、Power BI、Tableau 等)以跨多个数据库的数据层进行查询。使用此功能,您可以将查询扩展到 SQL 数据库中的大型数据层,并在商业智能 (BI) 报告中可视化结果。
更多详细信息,请参见T-SQL 查询:
希望这可以帮助。
推荐阅读
- swift - 用破折号导入模块
- macos - 如何将 MariaDB 设置为 MAMP
- reactjs - 当用户在 react-form-hooks 和 react-select 中进行不同选择时从 FormField 中删除数据
- javascript - 纱线找不到模块(html-to-text)
- ffmpeg - 尝试使用 ffplay 或 vlc 播放 h264 流时的伪影
- javascript - 有什么方法可以检测到 Ctrl + S?
- javascript - 我试图在这种情况下将一个字符放在一行中
- javascript - 通过js将URL从剪贴板传递到iframe?
- terraform - terraform : 将 var 与正则表达式和条件操作匹配
- python - 在 pyspark 结构化流中获取重叠的日期范围