OLE DB Provider for Exchange

Microsoft OLE DB Provider for Exchange 以表格形式公开存储在 Microsoft Exchange 2000 Web Store 中的数据。可以使用类似于 OLE DB Provider for Microsoft Indexing Service 所支持的 SQL 子集的 SQL 类语言来查询这些数据。

Microsoft SQL Server 分布式查询可用于通过此 OLE DB 访问接口查询 Exchange Web Store 中的数据,并可与 SQL Server 中的表联接。Exchange Web Store 应与 SQL Server 位于同一台计算机上。无法通过 OLE DB Provider for Exchange 访问位于其他计算机上的 Web Store。

OLE DB Provider for Exchange 是 Microsoft Exchange 2000 附带的。

针对 Exchange Web Store 创建链接服务器

  • 使用 'exoledb.DataSource.1' 作为 provider_name 参数,并使用 Web Store 根文件夹对应的 URL 作为 sp_addlinkedserver 系统存储过程的 data_source 参数:

    EXEC sp_addlinkedserver 'exchange', 
    'Exchange OLE DB provider', 
    'exoledb.DataSource.1',
    'file:\\.\backofficestorage\localhost\public folders'
    
  • 对于经过 Windows 验证的登录帐户,不需要设置登录映射。SQL Server 在连接到 OLE DB Provider for Exchange 时将模拟这些登录帐户。对于经过 SQL Server 验证的登录帐户,可根据需要通过提供用户名和密码来设置登录映射。

从 OLE DB Provider for Exchange 中查询数据时具有下列限制:

  • 只支持直接传递查询。不能对 Exchange OLE DB 访问接口使用包含四部分的名称。

  • OLE DB Provider for Exchange 中的所有字符列都以 ntext 列的形式向 SQL Server 公开。若要对这些列进行比较,必须使用 CONVERT 函数将它们显式转换为 nvarchar。

  • SQL Server 分布式查询不支持 Exchange 访问接口中的带 OLE DB DBTYPE DBTYPE_VECTOR 的多值列。

若要从 SQL Server 访问 Exchange Web Store 中的数据,请通过如上建立的链接服务器

  • 创建视图以便从感兴趣的 Web Store 文件夹中以列形式检索所需的属性。视图定义将把字符串列转换为 nvarchar 以便可以在 WHERE 子句中通过条件对它们进行筛选。

    例如,假设 Web Store 包含一个名为 Contacts 的文件夹,该文件夹中包含一个联系人列表。以下脚本将针对该 Contacts 文件夹创建一个视图,并检索每个联系人的名字、姓氏、公司名称和出生日期。

    CREATE VIEW Contacts
    AS
    SELECT convert(nvarchar(30),"urn:schemas:contacts:sn") LastName,
    Convert(nvarchar(30),"urn:schemas:contacts:givenname") 
    FirstName,
       Convert(nvarchar(30), "urn:schemas:contacts:o") Company,
       Convert(nvarchar(50), "urn:schemas:contacts:email1") Email,
       "urn:schemas:contacts:bday" BirthDay
    FROM OpenQuery(Exchange, 
      'SELECT "urn:schemas:contact:sn", 
              "urn:schema:contacts:givenname", 
              "urn:schemas:contacts:o",
           "urn:schemas:contacts:email1",
           "urn:schemas:contacts:bday"
       FROM ''.\contacts''')
    

    现在就可以查询视图并像常规表那样将它们与本地 SQL Server 表联接。例如,可以将 Contacts 视图与本地 Suppliers 表联接以确定各供应商的联系人信息。

    SELECT FirstName, LastName, Email, Company
    FROM    Suppliers S, Contacts C
    WHERE S.Company = C.CompanyName
    

有关 Exchange OLE DB 访问接口所支持的 SQL 语言的信息,请参阅 Microsoft Exchange 2000 文档。