Sql Azure 数据库中的链接服务器替代方案

Ami*_*jan 7 sql-server migration linked-server azure-sql-database

我们正在将数据库从 Rackspace 迁移到 Azure。我们的数据库部署在机架空间中的虚拟机上。在我们的查询中,我们使用链接服务器到其他数据库。基本上是跨数据库查询。问题是,迁移数据库后,我们无法使用链接服务器查询,因为 Sql Azure db 不支持链接服务器。

请帮忙。

更新:

  • 并非所有数据库都位于 Azure 中。有些数据库的所有者位于远程位置。我们需要查询在 Azure 外部运行的数据库。

  • Azure 中没有适用于 Sql Server 的 VM。我们在 Azure 中使用数据库即服务。

请参阅下图了解更多详情

在此输入图像描述

Alb*_*llo 3

您可以使用跨数据库查询,如此处所述。例如,要在查询中引用远程表,您需要创建一个数据源:

CREATE EXTERNAL DATA SOURCE MyExtSrc
WITH
(
 TYPE=SHARD_MAP_MANAGER,
 LOCATION='myserver.database.windows.net',
 DATABASE_NAME='ShardMapDatabase',
 CREDENTIAL= SMMUser,
 SHARD_MAP_NAME='ShardMap'
);
Run Code Online (Sandbox Code Playgroud)

使用该数据源定义外部表。

CREATE EXTERNAL TABLE [dbo].[all_dm_exec_requests](
 [session_id] smallint NOT NULL,
 [request_id] int NOT NULL,
 [start_time] datetime NOT NULL, 
 [status] nvarchar(30) NOT NULL,
 [command] nvarchar(32) NOT NULL,
 [sql_handle] varbinary(64),
 [statement_start_offset] int,
 [statement_end_offset] int,
 [cpu_time] int NOT NULL
)
WITH
(
 DATA_SOURCE = MyExtSrc,
 SCHEMA_NAME = 'sys',
 OBJECT_NAME = 'dm_exec_requests',
 DISTRIBUTION=ROUND_ROBIN
);
Run Code Online (Sandbox Code Playgroud)

最后,在 SELECT 语句上使用外部表。

SELECT TOP 10 
 [request_id],
 [start_time]
 [status],
 [command]
FROM all_dm_exec_requests
ORDER BY [cpu_time] DESC
Run Code Online (Sandbox Code Playgroud)