当前位置:学学看123知识中心电脑教学数据库教程Microsoft SQL Server 2000 分布式查询:OLE DB 连接» 正文

Microsoft SQL Server 2000 分布式查询:OLE DB 连接

[06-11 18:18:55]   来源:http://www.xxk123.com  数据库教程   阅读:8231

导读:表 2:基于提供程序的功能和事务环境的分布式查询结果。分布式查询发生提供程序不支持ITransactionLocal提供程序同时支持ItransactionLocal但不支持ITransactionJoin提供程序同时支持ItransactionLocal和 ITransactionJoin在自身事务中(非用户事务)。默认情况下,只允许读操作。如果启用提供程序级选项 Nontransacted Updates,则允许写操作。(当启用该选项时,SQL Server 不能保证提供程序数据的原子性和一致性。这将导致写操作的影响部分地反映到远程数据源中,而且无法撤消。)所有语句都允许在远程数据上运行。键集游标是只读的。本地事务在提供程序上以当前 SQL Server 会话隔离级别启动,然后在语句运行成功后提交。(除非使用 SET TRANSACTION ISOLATION LEVEL 对 SQL Server 会话的隔离级别进行修改,否则默认级别是 READ COMMITTED。提供程序必须支持请求的隔离级别。)允许所有语句。键集游标是只读的。本地事务在提供程序上以当前 S

Microsoft SQL Server 2000 分布式查询:OLE DB 连接,标签:sql数据库教程,access数据库教程,http://www.xxk123.com

表 2:基于提供程序的功能和事务环境的分布式查询结果。

分布式查询
发生提供程序不
支持
ITransactionLocal提供程序同时支持
ItransactionLocal
但不支持
ITransactionJoin提供程序同时支持

ItransactionLocal

ITransactionJoin在自身事务中(非用户事务)。默认情况下,只允许读操作。如果启用提供程序级选项 Nontransacted Updates,则允许写操作。(当启用该选项时,SQL Server 不能保证提供程序数据的原子性和一致性。这将导致写操作的影响部分地反映到远程数据源中,而且无法撤消。)所有语句都允许在远程数据上运行。键集游标是只读的。
本地事务在提供程序上以当前 SQL Server 会话隔离级别启动,然后在语句运行成功后提交。(除非使用 SET TRANSACTION ISOLATION LEVEL 对 SQL Server 会话的隔离级别进行修改,否则默认级别是 READ COMMITTED。提供程序必须支持请求的隔离级别。)允许所有语句。键集游标是只读的。
本地事务在提供程序上以当前 SQL Server 会话隔离级别启动,然后在语句运行成功后提交。在用户事务中(也就是说,发生在 BEGIN TRAN 或 BEGIN DISTRIBUTED TRAN 和 COMMIT 之间)。如果事务的隔离级别是 READ COMMITTED(默认值)或更低,则允许读操作。

如果隔离级别更高,将不允许分布式查询。

只允许读操作。

新的分布式事务在提供程序上以当前 SQL Server 会话隔离级别启动。

允许所有语句。
新的分布式事务在提供程序上以当前 SQL Server 会话隔离级别启动,然后在用户事务提交时提交。对于修改数据的语句,默认情况下,SQL Server 将在分布式事务下启动一个嵌套的事务,这样出现某种错误时就可以停止修改数据语句,而不必停止周围的事务。如果 XACT_ABORT SET 选项为打开状态,SQL Server 就不需要嵌套事务支持,而且在修改数据的语句出错时可停止周围的事务。

分布式查询中数据类型的处理

OLE DB 提供程序按照由 OLE DB 定义的数据类型(由 OLE DB 的 DBTYPE 指示)表明它们的数据。SQL Server 在服务器中以本地的 SQL Server 类型处理外部数据;不管数据是被 SQL Server 使用还是从 SQL Server 导出,这种处理方式都会产生从 OLE DB 数据类型到 SQL Server 本地数据类型的映射(见表 3)或者从 SQL Server 本地数据类型到 OLE DB 数据类型的映射。这种映射是以隐含方式实现的,除非另外注明。

分布式查询中的数据类型使用下列两种映射方式之一进行处理:

  • 使用端映射,当远程表出现在 SELECT 语句中并位于 INSERT、UPDATE 和 DELETE 语句的输入端时,该映射在使用端将类型从 OLE DB 数据类型映射为 SQL Server 本地数据类型。

  • 导出端映射,当远程表作为 INSERT 或 UPDATE 语句的目的表出现时,该映射在导出端将类型从 SQL Server 数据类型映射为 OLE DB 数据类型。

表 3:SQL Server 和 OLE-DB 数据类型映射表。

OLE DB 类型DBCOLUMNFLAGSQL Server 数据类型DBTYPE_I1* numeric(3,0)DBTYPE_I2 smallintDBTYPE_I4 intDBTYPE_I8 numeric(19,0)DBTYPE_UI1 tinyintDBTYPE_UI2* numeric(5,0)DBTYPE_UI4* numeric(10,0)DBTYPE_UI8* numeric(20,0)DBTYPE_R4 floatDBTYPE_R8 realDBTYPE_NUMERIC numericDBTYPE_DECIMAL decimalDBTYPE_CY moneyDBTYPE_BSTRDBCOLUMNFLAGS_ISFIXEDLENGTH=true
或最大长度大于 4000 个字符ntextDBTYPE_BSTRDBCOLUMNFLAGS_ISFIXEDLENGTH=truencharDBTYPE_BSTRDBCOLUMNFLAGS_ISFIXEDLENGTH=falsenvarcharDBTYPE_IDISPATCH ErrorDBTYPE_ERROR ErrorDBTYPE_BOOL bitDBTYPE_VARIANT* nvarcharDBTYPE_IUNKNOWN ErrorDBTYPE_GUID uniqueidentifierDBTYPE_BYTESDBCOLUMNFLAGS_ISLONG=true 或最大长度大于 8000imageDBTYPE_BYTESDBCOLUMNFLAGS_ISROWVER=true,
DBCOLUMNFLAGS_ISFIXEDLENGTH=true、
列大小等于 8 或未报告最大长度。timestampDBTYPE_BYTESDBCOLUMNFLAGS_ISFIXEDLENGTH=truebinaryDBTYPE_BYTESDBCOLUMNFLAGS_ISFIXEDLENGTH=truevarbinaryDBTYPE_STRDBCOLUMNFLAGS_ISFIXEDLENGTH=truecharDBTYPE_STRDBCOLUMNFLAGS_ISFIXEDLENGTH=truevarcharDBTYPE_STRDBCOLUMNFLAGS_ISLONG=true 或最大长度大于 8000 个字符或未报告最大长度。textDBTYPE_WSTRDBCOLUMNFLAGS_ISFIXEDLENGTH=truencharDBTYPE_WSTRDBCOLUMNFLAGS_ISFIXEDLENGTH=falsenvarcharDBTYPE_WSTRDBCOLUMNFLAGS_ISLONG=true 或 最大长度大于 4000 个字符或未报告最大长度。ntextDBTYPE_UDT ErrorDBTYPE_DATE* datetimeDBTYPE_DBDATE datetime(必须显式转换)DBTYPE_DBTIME datetime(必须显式转换)DBTYPE_DBTIMESTAMP* datetimeDBTYPE_ARRAY ErrorDBTYPE_BYREF IgnoredDBTYPE_VECTOR ErrorDBTYPE_RESERVED Error

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]  下一页


Tag:数据库教程sql数据库教程,access数据库教程电脑教学 - 数据库教程
前一篇:关于ORACLE连接池

Copyright 学学看123 All Right Reserved.

1 2 3 4 5 6 7 8 9 10