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

时间:2018-02-13 01:48:14

标签: azure-sql-database azure-elastic-scale

我们有一个场景,我们希望使用Azure Elastic Query,以便我们可以在地理上分布的多个数据库上运行聚合查询,并且可以随时间添加。但是,在添加或删除数据源时,我们还无法找到有用的文档或建议如何设计和运行可以可靠运行而无需手动修改的Azure弹性查询。

非常欢迎任何有此db技术经验的人的建议。

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

更新:我见过类似的问题/回答here,但我正在寻求更好的答案。

1 个答案:

答案 0 :(得分:2)

您可以使用将在查询中使用的特定名称创建外部源,但使用动态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