在SQL Server中,从2个不同的分片上的同一表中按字母顺序检索数据的正确方法是什么?
现在在我正在工作的数据库上有一个表存在于2个不同的分片上。我需要能够选择数据从每个表按字母顺序在批5。例如。
在Shard1中,我们有一个包含6项数据的表
A,
A,
A,
A,
A,
A
在Shard2中,我们有一个包含4项数据的表
A2,
B2,
C2,
D2,
第一次运行查询时,我需要返回
A,
A,
A,
A,
A
当我下次运行它时,它应该返回
A,
A2,
B2,
C2,
D2
我一直在看文档,但不清楚该怎么做。原因是这似乎是不可能的,因为必须有某种中间组件,它必须在单独的数据库中跟踪每个表的字母顺序。我知道在一个数据库中的一个表上按字母顺序执行操作很容易,但是跨数据库和表执行操作似乎不可能。什么是正确的方法来做到这一点与sql服务器?或者这是可能的?
我不太清楚你在问什么,因为分片不是SQL Server的具体功能。
也就是说,让我们假设您有两个独立的SQL Server实例,具有相同的表,并且您在它们之间设置了一个链接服务器。您可以在子查询中使用UNION
或UNION ALL
组合这两组数据(取决于您是否想要分别在数据集中删除或保留重复项),然后按字母顺序排列它们,如下所示:
SELECT TOP 5 -- Top 5 alphabetically
ItemId
FROM
(
SELECT ItemId
FROM dbo.Items -- Local instance's copy of the table
UNION -- Removing duplicates (as per your example)
SELECT ItemId
FROM LinkedServerName.DatabaseName.dbo.Items -- Remote instance's copy of the table
) AS Items
ORDER BY ItemId