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 table
和 dest table
驻留在同一个数据库中。
最坏的情况,我可以将 source table
复制到同一服务器上的另一个数据库并跨数据库查询。如果存在在同一数据库上完成此操作的选项,我宁愿避免被迫使用两个单独的数据库。
你不能。并非没有别名和其他技巧。
如果您不介意您的查询 table 有点落后于您的来源 table,为什么不创建一个存储过程:
- T运行仅对查询进行分类 table。
- 仅将您的来源 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 并在那里阅读相关信息) .
我想复制一个 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 table
和 dest table
驻留在同一个数据库中。
最坏的情况,我可以将 source table
复制到同一服务器上的另一个数据库并跨数据库查询。如果存在在同一数据库上完成此操作的选项,我宁愿避免被迫使用两个单独的数据库。
你不能。并非没有别名和其他技巧。
如果您不介意您的查询 table 有点落后于您的来源 table,为什么不创建一个存储过程:
- T运行仅对查询进行分类 table。
- 仅将您的来源 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 并在那里阅读相关信息) .