当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 分布式查询和分布式事务

MSSQL
sql 批量修改数据库表
mssql CASE,GROUP BY用法
利用SQL SERVER建立登录WINDOWS帐号
SQL Server 2008 正式版安装指南 包含序列号
SQL Server 2008图文安装教程
sql 语句 取数据库服务器上所有数据库的名字
sqlserver 数据类型转换小实验
SQL Server 存储过程解析
压缩技术给SQL Server备份文件瘦身
SQL Server 2005 还原数据库错误解决方法
Sql Server datetime问题
SQL语句 操作全集 学习mssql的朋友一定要看
格式导致的Excel导入sql出现异常的解决方法
SQL Server 数据库自动执行管理任务
sql Set IDENTITY_INSERT的用法
sql 修改表的所有者
过程需要参数 ''@statement'' 为 ''ntext/nchar/nvarchar'' 类型
mssql 建立索引
SQL Server 索引结构及其使用(一)--深入浅出理解索引结构
SQL Server 索引结构及其使用(二) 改善SQL语句

MSSQL 中的 分布式查询和分布式事务


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 62 ::
收藏到网摘: n/a

Microsoft® SQL Server™ 允许创建与称为链接服务器的 OLE DB 数据源的链接。在链接到 OLE DB 数据源之后,可以:

从 OLE DB 数据源引用行集,作为 Transact-SQL 语句中的表。


将命令传递给 OLE DB 数据源,并包含结果行集,作为 Transact-SQL 语句中的表。
每个分布式查询都可以引用多个链接的服务器,而且可以对每个链接的服务器分别执行更新或读取操作。单个分布式查询
可以对某些链接的服务器执行读取操作,并且对其它链接的服务器执行更新操作。通常情况下,每当某个事务可能更新多
个链接服务器中的数据时,Microsoft SQL Server 都要求相应的 OLE DB 提供程序支持分布式事务。因此,链接服务器上
所支持的查询类型取决于 OLE DB 提供程序中对事务的支持级别。OLE DB 为事务管理定义了两个可选的接口:

ITransactionLocal 支持 OLE DB 数据源中的本地事务。


ITransactionJoin 允许提供程序联结包含其它资源管理器的分布式事务。
所有支持 ITransactionJoin 的提供程序也都支持 ITransactionLocal。

如果在连接是自动提交模式时执行分布式查询,则应用以下规则:

对于不支持 ItransactionLocal 的提供程序,只允许执行读取操作。


对于支持 ITransactionLocal 的提供程序,允许执行所有更新操作。
主控 SQL Server 会自动调用每个参与更新操作的链接的服务器中的 ITransactionLocal,以启动本地事务,并在语句执
行成功时提交或在语句执行失败时回滚。

如果分布式查询是针对分布式分区视图或者是在连接为显式或隐性事务时执行,则应用下列规则:

对于不支持 ITransactionJoin 的提供程序,只允许执行读取操作。不支持任何事务或只支持 ITransactionLocal 的提供
程序不能参与更新操作。


如果 SET XACT_ABORT 设置为 ON,则对于支持 ITransactionJoin 的任意提供程序都允许执行所有的更新操作。主控
SQL Server 会自动调用每个参与更新操作的链接服务器中的 ITransactionJoin,以便在分布式事务中登记该服务器。然
后当主控服务器表示要提交或回滚事务时,MS DTC 将提交或者回滚。


如果 SET XACT_ABORT 设置为 OFF,则链接服务器还必须支持嵌套事务,才能对其执行更新操作。当会话已经有一个现有
事务时,如果提供程序支持调用 ITransactionLocal::StartTransaction,则支持嵌套事务。这使 SQL Server 得以回滚
分布式查询中的单个语句,而不是回滚整个事务。
上述规则意味着提供程序的下列限制不支持嵌套事务:仅在 XACT_ABORT 选项设置为 ON 时,分布式事务中才允许更新操