查询多个 Azure SQL 数据库 - Azure SQL 数据库不能用作中央管理服务器
Query multiple Azure SQL databases - Azure SQL Database cannot be used as a Central Management Server
我需要 运行 查询所有数据库(具有相同架构),问题是这些是弹性池中的 Azure 数据库。我读到这可以使用 SQL Management Studio 中的 "Central Management Servers" 功能来完成,但我已经安装了最新版本 18.3 但是当我尝试在 [=18= 下扩展 Azure SQL 服务器时] 我收到以下错误:
Azure SQL Database cannot be used as a Central Management Server
我尝试 运行 针对所有数据库的查询类型如下,这在本地 SQL 服务器实例上工作正常,但在 Azure SQL 上不起作用服务器.
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 数据库不支持 Administer Multiple Servers Using Central Management Servers。
由于您的数据库在同一个弹性池中,您可以使用 Elastic Query 到 运行 对所有数据库的查询。
弹性查询功能(预览版)使您能够 运行 跨 Azure SQL 数据库中的多个数据库的 Transact-SQL 查询。它允许您执行跨数据库查询以访问远程表,并连接 Microsoft 和第三方工具(Excel、Power BI、Tableau 等)以使用多个数据库进行跨数据层查询。使用此功能,您可以将查询扩展到 SQL 数据库中的大型数据层,并在商业智能 (BI) 报告中可视化结果。
详情请见T-SQL querying:
- Reporting across scaled-out cloud databases (preview)
- Query across cloud databases with different schemas (preview)
希望对您有所帮助。
我需要 运行 查询所有数据库(具有相同架构),问题是这些是弹性池中的 Azure 数据库。我读到这可以使用 SQL Management Studio 中的 "Central Management Servers" 功能来完成,但我已经安装了最新版本 18.3 但是当我尝试在 [=18= 下扩展 Azure SQL 服务器时] 我收到以下错误:
Azure SQL Database cannot be used as a Central Management Server
我尝试 运行 针对所有数据库的查询类型如下,这在本地 SQL 服务器实例上工作正常,但在 Azure SQL 上不起作用服务器.
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 数据库不支持 Administer Multiple Servers Using Central Management Servers。
由于您的数据库在同一个弹性池中,您可以使用 Elastic Query 到 运行 对所有数据库的查询。
弹性查询功能(预览版)使您能够 运行 跨 Azure SQL 数据库中的多个数据库的 Transact-SQL 查询。它允许您执行跨数据库查询以访问远程表,并连接 Microsoft 和第三方工具(Excel、Power BI、Tableau 等)以使用多个数据库进行跨数据层查询。使用此功能,您可以将查询扩展到 SQL 数据库中的大型数据层,并在商业智能 (BI) 报告中可视化结果。
详情请见T-SQL querying:
- Reporting across scaled-out cloud databases (preview)
- Query across cloud databases with different schemas (preview)
希望对您有所帮助。