Table 在同一个数据库中复制

Table replication in the same database

我想复制一个 table(称之为 table source table)到只读 table(称之为 table dest table) 在同一数据库中。我只找到了有关跨不同数据库发布和订阅的信息。 Microsoft SQL 服务器是否支持在同一数据库中复制 table 的功能?

这种需求源于这样一个事实,即我们有一个非常复杂且不易更改的过程,用于更新记录并将记录插入 source table,并且自创建该过程以来,我们开发了一种需要查询 source table,这导致了间歇性冲突(即我们更新 source table 的进程暂时被阻塞,而其他查询正在 运行ning)。我们需要避免这些 blocks/delays 进入我们的过程。我们对 source table 的查询总是优先级较低。

运行 针对 source table 的所有查询都是针对 speed/efficiency 和最小 table 锁定的索引列进行查询的,而大多数 运行 针对 source table 完成 with (nolock) 提示出于同样的原因。然而,我们仍然遇到锁定问题,这些问题会延迟我们更新和插入新记录到 source table 的过程。

根据我阅读的有关事务复制的所有内容,这应该允许我们在不锁定 source table 的情况下尽可能多地查询 dest table。我所知道的关于复制的问题是我希望我的 source tabledest table 驻留在同一个数据库中。

最坏的情况,我可以将 source table 复制到同一服务器上的另一个数据库并跨数据库查询。如果存在在同一数据库上完成此操作的选项,我宁愿避免被迫使用两个单独的数据库。

你不能。并非没有别名和其他技巧。

如果您不介意您的查询 table 有点落后于您的来源 table,为什么不创建一个存储过程:

  1. T运行仅对查询进行分类 table。
  2. 仅将您的来源 table 插入您的查询 table。

然后只需安排一项任务 运行 您的存储过程,每小时或您想要更新查询的频率 table(即每 4 小时一次,每 30 分钟一次,等等)。

SQL 服务器将一个 table 的内容复制到另一个 table 的速度非常快。 T运行首先仅 table 满足您的查询本身将是一个非常快速的操作,并且会防止重复记录。您可能想考虑仅删除查询 table,然后让 SQL 服务器仅构建查询 table,因为它插入源 table 的内容。那也是相当快的。此 select 语句采用 Select * Into ReadOnlyTable From SourceTable 的形式。您可以使用搜索词 "SQL Select Into statement" 在您最喜欢的搜索引擎中查找更多信息(如果您不想自己使用谷歌搜索,也可以转到 http://www.w3schools.com/sql/sql_select_into.asp 并在那里阅读相关信息) .