Azure sql database 如何在不更改弹性查询的情况下添加新数据源?

Azure sql database 如何在不更改弹性查询的情况下添加新数据源?,azure-sql-database,azure-elastic-scale,Azure Sql Database,Azure Elastic Scale,我们有一个场景,我们希望使用Azure Elastic Query,以便允许我们在地理上分布的多个数据库上运行聚合查询,这些数据库可能会随着时间的推移而添加。然而,在添加或删除数据源的同时,我们还无法找到有用的文档或建议如何设计和运行能够可靠运行而无需修改(手动)的Azure Elastic查询 欢迎有此db技术经验的人提供任何建议 作为另一个特定的约束,不同的源数据库都是SQL Express数据库-我们正在考虑将这些数据库映射到在线Azure SQL实例(PaaS) 更新:我看到类似的问题被

我们有一个场景,我们希望使用Azure Elastic Query,以便允许我们在地理上分布的多个数据库上运行聚合查询,这些数据库可能会随着时间的推移而添加。然而,在添加或删除数据源的同时,我们还无法找到有用的文档或建议如何设计和运行能够可靠运行而无需修改(手动)的Azure Elastic查询

欢迎有此db技术经验的人提供任何建议

作为另一个特定的约束,不同的源数据库都是SQL Express数据库-我们正在考虑将这些数据库映射到在线Azure SQL实例(PaaS)


更新:我看到类似的问题被询问/回答,但我正在寻找更好的答案。

您可以使用特定名称创建外部源,该名称将用于查询,但可以使用动态SQL以编程方式更改源使用的位置和数据库名称:

ALTER PROCEDURE CETFromNewLocation    AS

BEGIN

DECLARE @location varchar(100)

SET @location = 'myserver.database.windows.net'

DECLARE @CreateExternalTableString varchar(100)

SET @CreateExternalTableString = 'CREATE EXTERNAL DATA SOURCE MyExtSrc
WITH
(
    TYPE=SHARD_MAP_MANAGER,
    LOCATION=' + @location + ' DATABASE_NAME='ShardMapDatabase',
    CREDENTIAL= SMMUser,
    SHARD_MAP_NAME='ShardMap'
);'

    EXEC sp_executesql @CreateExternalTableString

END

您可以使用将在查询中使用的特定名称创建外部源,但可以使用动态SQL以编程方式更改源所使用的位置和数据库名称:

ALTER PROCEDURE CETFromNewLocation    AS

BEGIN

DECLARE @location varchar(100)

SET @location = 'myserver.database.windows.net'

DECLARE @CreateExternalTableString varchar(100)

SET @CreateExternalTableString = 'CREATE EXTERNAL DATA SOURCE MyExtSrc
WITH
(
    TYPE=SHARD_MAP_MANAGER,
    LOCATION=' + @location + ' DATABASE_NAME='ShardMapDatabase',
    CREDENTIAL= SMMUser,
    SHARD_MAP_NAME='ShardMap'
);'

    EXEC sp_executesql @CreateExternalTableString

END

谢谢我在文档中看到了这方面的提示,但由于不熟悉弹性查询,需要一些具体的例子来加深我的理解。谢谢。我在文档中看到了这方面的提示,但由于不熟悉弹性查询,需要一些具体的例子来加深我的理解。