定义服务器游标的属性 将远程表上的数据复制到本地

在本地服务器上,我用了一个 数据库链接 连接到 远程服务器。由于需要将远程表上的一些数据更新到本地服务器上,我写了一个sp。执行这些语句的时候,虽然数据已经成功抄下来,但会提示出错,如果用计划任务执行的话是不会成功的。

None.gif declare  mcursor  cursor   for
None.gif        
select  branch_code  from   [192.168.3.51 ] .dbname.dbo.table  where  obsoleted  =   ' F '
None.gif    
open  mcursor
None.gif    
close  mcursor
None.gif    
deallocate  mcursor

错误提示:远程表不可更新。远程表上的可更新键集驱动游标要求事务具有扫过游标的 REPEATABLE_READ 或 SERIALIZABLE 隔离级别。
(Remote tables are not updatable. Updatable keyset-driven cursors on remote tables require a transaction with the REPEATABLE_READ or SERIALIZABLE isolation level spanning the cursor.)

这种错误是什么原因导致的呢,原因就是远程表上的游标不可更新。解决办法 1 如下:

None.gif declare  INSENSITIVE mcursor  cursor   for
None.gif        
select  branch_code  from   [192.168.3.51 ] .dbname.dbo.table  where  obsoleted  =   ' F '
None.gif    
open  mcursor
None.gif    
close  mcursor
None.gif    
deallocate  mcursor

附:
sqlserver帮助里面的相关帮助。

INSENSITIVE

定义一个游标,以创建将由该游标使用的数据的临时复本。对游标的所有请求都从 tempdb 中的这一临时表中得到应答;因此,在对该游标进行提取操作时返回的数据中不反映对基表所做的修改,并且该游标不允许修改。使用 SQL-92 语法时,如果省略 INSENSITIVE,则已提交的(任何用户)对基础表的删除和更新都反映在后面的提取中。



转载于:https://www.cnblogs.com/coolstr/archive/2006/01/21/321331.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值