在同一个数据库中的表复制

我想在同一个数据库中复制一个表(称为此表source table)到一个只读表(调用此表dest table)。我只找到有关在不同数据库中发布和订阅的信息。是否可以在Microsoft SQL Server中支持的同一数据库中复制表的功能?在同一个数据库中的表复制

这需要是因为我们有一个非常复杂且不易更改的过程,它将记录更新并插入到source table中,而且由于此过程已创建,因此我们开发了查询source table的需求,它导致间歇性冲突(即我们的流程更新source table在其他查询运行时暂时被阻止)。我们需要避免这些阻碍/拖延我们的过程。我们对source table的查询始终处于较低优先级。

所有这一切对source table运行的查询被查询的速度/效率和最低的表锁定,最被反对source table运行查询的完成with (nolock)提示出于同样的原因索引列。但是我们仍然遇到锁定问题,这会延迟我们更新并将新记录插入到source table的过程。

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

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

回答:

如果你不介意你的查询表来有些源桌子后面,你为什么不创建一个存储的过程:

  1. 截断查询只表。
  2. 将源表插入到仅查询表中。

然后只是安排一个任务来运行您的存储过程每小时或无论如何经常要更新您的查询表(即,每4小时,每30分钟一次等)。

SQL Server在将一个表的内容复制到另一个表中时速度非常快。首先截断仅查询表的操作本身就是一个非常快速的操作,并且会防止重复的记录。您可能想考虑只删除仅查询表,然后让SQL Server在插入源表的内容时构建仅查询表。这也很快。此选择语句的格式为Select * Into ReadOnlyTable From SourceTable。您可以使用搜索词“SQL Select Into声明”在您最喜爱的搜索引擎中查找更多信息(或者,如果您不希望自己使用谷歌搜索,只需转到http://www.w3schools.com/sql/sql_select_into.asp并在此处阅读它即可查看)。

回答:

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

以上是 在同一个数据库中的表复制 的全部内容, 来源链接: utcz.com/qa/260420.html

回到顶部