你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

跨扩展云数据库进行报告(预览)

适用于:Azure SQL 数据库

可以使用弹性查询从单个连接点中的多个数据库创建报告。 数据库必须进行横向分区(也称为“分片”)。

如果有现有数据库,请参阅 “迁移现有数据库以横向扩展”。

若要了解查询所需的 SQL 对象,请参阅 跨横向扩展云数据库(预览版)进行报告

先决条件

下载并运行弹性数据库工具入门

使用示例应用程序创建分片映射管理器

在这里,你将创建一个分片图管理器以及几个分片,然后将数据插入到这些分片中。 如果分片中正好设置了分片数据,则可以跳过下面的步骤,直接转到下一部分。

  1. 按照文章部分下载并运行示例应用中的步骤,生成并运行弹性数据库工具入门示例应用程序。 完成所有步骤后,会看到以下命令提示符:

    弹性数据库工具初学者工具包命令提示符的屏幕截图。

  2. 在命令窗口中,键入 1 并按 Enter。 这会创建分片映射管理器,并将两个分片添加到服务器。 然后键入 3 并按 Enter;重复作四次。 这会在分片中插入示例数据行。

  3. Azure 门户应显示服务器中的 3 个新数据库:

    Visual Studio 确认创建三个数据库的屏幕截图。

    目前,通过弹性数据库客户端库支持跨数据库查询。 例如,在命令窗口中使用选项 4 。 来自多分片查询的结果始终是所有分片结果的 UNION ALL

    在下一部分,我们创建支持更丰富的跨分片数据查询的示例数据库终结点。

创建弹性查询数据库

  1. 转到 Azure 门户并登录。

  2. 在与分片设置相同的服务器中的 Azure SQL 数据库中创建新的数据库。 将数据库 ElasticDBQuery命名为 。

    可以使用现有数据库。 如果这样做,该数据库不能是你想要对其运行查询的某一个分片。 此数据库用于创建弹性数据库查询的元数据对象。

创建数据库对象

数据库范围的主密钥和凭据

它们用来连接到分片映射管理器和分片:

  1. 在 Visual Studio 中打开 SQL Server Management Studio 或 SQL Server Data Tools。

  2. 连接到 ElasticDBQuery 数据库并执行以下 T-SQL 命令:

    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
    
    CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
    WITH IDENTITY = '<username>',
    SECRET = '<password>';
    

    “username”和“password”应都是在前面的步骤中创建的登录信息。

外部数据源

若要创建外部数据源,请在数据库上 ElasticDBQuery 执行以下命令:

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH
    (TYPE = SHARD_MAP_MANAGER,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb',
    CREDENTIAL = ElasticDBQueryCred,
    SHARD_MAP_NAME = 'CustomerIDShardMap'
) ;

如果使用弹性数据库工具示例创建了分片映射和分片映射管理器,CustomerIDShardMap 是分片映射的名称。 但是,如果为此示例使用了自定义设置,则它应该是你在应用程序中选择的分片映射名称。

外部表

通过在数据库 ElasticDBQuery 上执行以下命令,创建与分片上的 Customers 表匹配的外部表。

CREATE EXTERNAL TABLE [dbo].[Customers]
( [CustomerId] [int] NOT NULL,
    [Name] [nvarchar](256) NOT NULL,
    [RegionId] [int] NOT NULL)
WITH
( DATA_SOURCE = MyElasticDBQueryDataSrc,
    DISTRIBUTION = SHARDED([CustomerId])
) ;

执行示例弹性数据库 T-SQL 查询

定义外部数据源和外部表后,使用 T-SQL 查询外部表。

ElasticDBQuery 数据库执行以下查询:

select count(CustomerId) from [dbo].[Customers];

你会注意到,该查询汇总了来自所有分片的结果,并生成了以下输出:

输出详细信息。

将弹性数据库查询结果导入 Excel

可以将查询结果导入到 Excel 文件。

  1. 启动Microsoft Excel。
  2. 导航到“数据”功能区 。
  3. 选择“从其他来源”,然后选择“从 SQL Server”
  4. 数据连接向导中,键入服务器名称和登录凭据。 然后选择下一步
  5. 在对话框中 ,选择包含所需数据的数据库,选择数据库 ElasticDBQuery
  6. 选择列表视图中的 Customers 表,然后选择“ 下一步”。 然后选择“完成”。
  7. “导入数据 ”窗体中,在“ 选择要如何在工作簿中查看此数据”下,选择 “表”。 选择“确定”

存储在不同分片中、来自 Customers 表的所有行将填入 Excel 工作表。

现在,可以使用 Excel 的强大数据可视化功能。 可以将连接字符串与服务器名称、数据库名称和凭据配合使用,将 BI 和数据集成工具连接到弹性查询数据库。 请确保支持将 SQL Server 用作工具的数据源。 可以引用弹性查询数据库和外部表,就如同使用工具连接的任何其他 SQL Server 数据库和 SQL Server 表一样。

成本

使用弹性数据库查询功能无需额外付费。

有关定价信息,请参阅 SQL 数据库定价详细信息