0

我在 SQL Server 2008 R2 中定义了一个视图,该视图使用链接服务器“正在查看”Oracle 10g 中的一个表。

我需要这样做(使用 SqlServer 端存储过程):

  1. 从视图中获取分子。
  2. 做一些影响 SQL Server 表的事情。
  3. 更新视图中的分子。

这需要一点时间,但我想在我的所有进程中锁定 oracle 表,因为其他程序可能会使用该表。所以,我想做的是:

  1. 锁定 oracle 表
  2. 从视图中获取分子。
  3. 做一些影响 SQL Server 表的事情。
  4. 更新视图中的分子。
  5. 释放锁

不知道如何执行第 1 步和第 4 步。

提前致谢。

4

1 回答 1

0

我会在 oracle 中执行以下操作:

create materialized view foo_View  
as  
--select statement that has the data sql server is looking for

然后在 Oracle 中执行一个调度程序任务,该任务会定期重建/刷新此视图。

SQL Server 不需要向 Oracle 指示任何内容,听起来应用程序正在流血到不应该出现的地方。Oracle 物化视图的好处是可以在 SQL Server 进程运行时查询它而不会导致 Oracle 关闭。

来自评论

我的进程在 SQL Server 上运行,但我需要锁定 Oracle 表。

这就是我建议使用物化视图的原因。您不会关心另一个进程是否修改了基础表,因为 SQL Server 能够访问的唯一数据是该快照(也称为物化视图)。因此,您不必担心任何可能破坏 SQL Server 进程的资源争用/中流更新。这里的关键是您只关心哪些数据存在nownow由物化视图可用的快照定义的位置。

于 2012-12-27T18:56:04.283 回答