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

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

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

导读:读取 LOB 列使用被请求的结构化存储接口的接口指针(在 IRowset::GetData 生成的行缓冲区中返回)来读取大对象列。如果提供程序不支持同时打开多个 LOB(即不支持 DBPROP_MULTIPLE_STORAGEOBJECTS)并且该行有多个大对象列时,SQL Server 将把 LOB 复制到本地工作表中。在 LOB 列上的 UPDATE 和 INSERT 语句SQL Server 通过向提供程序传递一个指向新的存储对象的指针来修改存储对象,而不使用提供程序所提供的接口。对于每个 LOB 列,存储对象上被更新或插入的值是使用选定的结构化存储接口创建的。根据操作是 UPDATE 还是 INSERT,指向存储对象的指针分别通过 IRowsetChange::SetData 或 IRowsetChange::InsertRow 传递到提供程序。错误处理如果对 OLE DB 提供程序特定方法的调用返回错误代码,SQL Server 将查找提供程序的扩展错误信息,然后将有关错误条件的信息返回给用户。SQL Server 使用由 OLE DB 指定的 OLE D

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

读取 LOB 列

使用被请求的结构化存储接口的接口指针(在 IRowset::GetData 生成的行缓冲区中返回)来读取大对象列。如果提供程序不支持同时打开多个 LOB(即不支持 DBPROP_MULTIPLE_STORAGEOBJECTS)并且该行有多个大对象列时,SQL Server 将把 LOB 复制到本地工作表中。

在 LOB 列上的 UPDATE 和 INSERT 语句

SQL Server 通过向提供程序传递一个指向新的存储对象的指针来修改存储对象,而不使用提供程序所提供的接口。对于每个 LOB 列,存储对象上被更新或插入的值是使用选定的结构化存储接口创建的。根据操作是 UPDATE 还是 INSERT,指向存储对象的指针分别通过 IRowsetChange::SetData 或 IRowsetChange::InsertRow 传递到提供程序。

错误处理

如果对 OLE DB 提供程序特定方法的调用返回错误代码,SQL Server 将查找提供程序的扩展错误信息,然后将有关错误条件的信息返回给用户。

SQL Server 使用由 OLE DB 指定的 OLE DB 错误对象。其中的高级步骤有:

  1. 如果方法调用返回来自提供程序的错误代码,SQL Server 将查找 ISupportErrorInfo 接口。如果支持该接口,SQL Server 将调用 ISupportErrorInfo::InterfaceSupportsErrorInfo 来验证生成错误代码的接口是否支持该错误对象。

  2. 如果接口支持该错误对象,SQL Server 将调用 GetErrorInfo 函数来获得一个指向当前错误对象的 IErrorInfo 接口指针。

  3. SQL Server 使用 IErrorInfo 接口获得指向 IErrorRecords 接口的指针。

  4. SQL Server 使用 IErrorRecords 来循环查找对象中的所有错误记录并获得对应于每个记录的错误信息文本。

有关如何使用提供程序的错误对象的详细信息,请参阅 OLE DB 文档。

安全性

当使用者连接到 OLE DB 提供程序时,通常情况下,除非使用者希望作为集成安全用户被验证,否则提供程序将需要用户 ID 和密码。在分布式查询中,SQL Server 将作为 OLE DB 提供程序的使用者(代表执行分布式查询的 SQL Server 登录)。SQL Server 将当前的 SQL Server 登录映射为链接服务器上的用户 ID 和密码。

这些映射可以被用户指定用于给定的链接服务器,并可以通过系统存储过程 sp_addlinkedsrvlogin 和 sp_droplinkedsrvlogin 来建立并管理。通过使用 IDBProperties::SetProperties 来建立初始化组属性 DBPROP_AUTH_USERID 和 DBPROP_AUTH_PASSWORD,由映射确定的用户 ID 和密码可在连接建立的过程中传递到提供程序。

当客户端通过 Microsoft® Windows NT® 的身份验证连接到 SQL Server 时,如果登录使用 sp_addlinkedsrvlogin 建立自身的映射,那么 SQL Server 在连接建立的过程中将尝试模拟客户端的安全上下文并设置提供程序的 DBPROP_AUTH_INTEGRATED 属性。此过程称为“委派”。只有 Windows® 2000 完全支持委派。在 Windows NT 4.0 或更早版本中,只有提供程序完全位于 SQL Server 机器中并且没有通过网络连接到后端数据源时才支持委派。在这种情况下,Windows NT 已验证的登录必须映射为特定的用户 ID 和密码才能访问链接服务器。

在确定了用于连接的安全上下文后,OLE DB 提供程序将全面负责安全上下文的验证以及对数据源中数据对象的权限检查。

有关 sp_addlinkedsrvlogin 和 sp_droplinkedsrvlogin 的详细信息,请参阅 SQL Server Books Online。

查询执行方案

执行分布式查询时,SQL Server 与 OLE DB 提供程序进行交互有下述一个或多个方案:

  • 远程查询

  • 索引访问

  • 单纯表扫描

  • UPDATE 和 DELETE 语句

  • INSERT 语句

  • 传递查询

远程查询

SQL Server 生成一个 SQL 查询,它将计算出由提供程序完整执行的初始查询的一部分。该方案只能用于 SQL 命令提供程序。SQL Server 通过生成 SQL 查询将操作转给提供程序的程度取决于提供程序支持的 SQL 语法。提供程序应通过如下方式指出它的 SQL 支持级别:

  1. 通过 DBPROP_SQLSUPPORT 属性指出 SQL Minimum、ODBC Core 或 SQL-92 Entry 级别。SQL Minimum 语法级别是 SQL Server 2000 支持的新级别,它允许 SQL Server 向支持 SQL 简单子集的简单提供程序发送远程查询。该级别包含基本 SELECT 语句,即不包括子查询、在 FROM 子句中使用多表(因此无联接)和 GROUP BY 的 SELECT 语句。有关 SQL Server 用来为各语法级别的提供程序生成远程查询的 SQL 语法的子集的详细信息,请参阅附录 B:用于生成远程查询的 SQL 子集。

  2. 通过支持各种 SQL Server 特有的属性来指出对个别 SQL 功能的支持,这些 SQL 功能没有包括在 DBPROP_SQLSUPPORT 报告的语法级别中。在本节后面描述了属性列表和 SQL Server 使用它们的方法。

上一页  [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