为远程SQLServer的表创建游标的问题

lityuo 2003-08-19 03:36:10
在位远程数据库创建游标
语句入下:
declare cursor_name cursor for select * from remote.db.dbo.table
但是出现错误:
Updatable keyset cursors on remote tables require a transaction with the REPEATABLE_READ or SERIALIZABLE isolation level.

不知道这是什么问题?
...全文
34 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lityuo 2003-08-19
  • 打赏
  • 举报
回复
出现错误:MSDTC on server 'DUOMEITI'(我自己的机器) is unavailable.
CrazyFor 2003-08-19
  • 打赏
  • 举报
回复
事务(级别 2)
SQL Server 6.x
当 CURSOR_CLOSE_ON_COMMIT 设置为 OFF 时,ROLLBACK 语句不关闭使用 DECLARE CURSOR 语句定义的 Transact-SQL 游标。通过数据库 API 函数打开的服务器游标在 ROLLBACK 语句后仍然保持打开。

SQL Server 2000

当 CURSOR_CLOSE_ON_COMMIT 设置为 OFF,ROLLBACK 语句关闭所有由 DECLARE CURSOR 语句的 SQL-92 形式定义的 Transact-SQL 游标,除非 DECLARE CURSOR 语句包含 INSENSITIVE 或 STATIC 关键字。除非游标已定义为 STATIC 游标(例如使用 ODBC SQL_CURSOR_STATIC 属性),否则所有 API 服务器游标也关闭。
与 SQL Server 早期版本相比,应该有不同的结果。在发出 ROLLBACK 语句后重新打开所有游标。

SET TRANSACTION ISOLATION LEVEL 的 REPEATABLE READ 子句与 SERIALIZABLE 子句行为相同。无法确保重复读取,也没有防止幻像(在回滚后,逻辑上永远不存在所读取的值)的措施。需要 REPEATABLE READ 语义的事务必须付出额外的可串行性并行损失。

SQL Server 2000

REPEATABLE READ 子句现在不再必须防止幻像。使用 SET TRANSACTION ISOLATION LEVEL 的 SERIALIZABLE 子句设置可串行事务,允许比 REPEATABLE READ 子句更少的并行,因为其防止幻像。
与 SQL Server 早期版本相比,应该有不同的结果。很多应用程序仅需要 REPEATABLE READ 语义进行正确的操作。对于需要 REPEATABLE READ 语义而不需要幻像保护的应用程序,使用 SET TRANSACTION ISOLATION LEVEL 的 REPEATABLE READ 子句。如果必需进行幻像保护,则使用 SERIALIZABLE 子句。



以下是使用 SET TRANSACTION ISOLATION LEVEL 的 SQL Server 6.5 版和 SQL Server 2000 幻像保护的摘要。

幻像保护 SQL Server 6,5 SQL Server 2000
REPEATABLE READ 是 否
SERIALIZABLE 是 是


©1988-2000 Microsoft Corporation。保留所有权利。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧