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

适用于:Azure SQL 数据库

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

如果有现有的数据库,请参阅将现有数据库迁移到扩展数据库

若要了解需要查询的 SQL 对象,请参阅跨横向分区的数据库进行查询

先决条件

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

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

在此处,用户将创建分片映射管理器以及多个分片,并将数据插入分片。 如果分片中正好设置了分片数据,则可以跳过下面的步骤,直接转到下一部分。

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

    命令提示符

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

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

    Visual Studio 确认

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

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

创建弹性查询数据库

  1. 打开 Azure 门户并登录。

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

    Azure 门户和定价层

    注意

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

创建数据库对象

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

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

  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”应该与弹性数据库工具入门一文中下载并运行示例应用部分的步骤 3 中使用的登录信息相同。

外部数据源

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

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

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

外部表

通过对 ElasticDBQuery 数据库执行以下命令,创建与分片上的客户表匹配的外部表:

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. 启动 Excel 2013。

  2. 导航到“数据”功能区 。

  3. 单击“从其他源”,然后单击“从 SQL Server” 。

    从其他源导入 Excel

  4. 在“数据连接向导”中,键入服务器名称和登录凭据 。 。

  5. 在“选择包含所需数据的数据库”对话框中,选择 ElasticDBQuery 数据库 。

  6. 在列表视图中选择“客户”表并单击“下一步” 。 然后单击“完成” 。

  7. 在“导入数据”窗体中的“请选择该数据在工作簿中的显示方式”下,选择“表”,然后单击“确定” 。

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

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

成本

使用弹性数据库查询功能不会产生额外的费用。

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

后续步骤