------------------------------------------------------ Microsoft(R) SQL Server OLE DB Provider 7.00.459 自述文件 ------------------------------------------------------ (c) 1998 Microsoft Corporation。保留所有权力。 本文档提供了 Microsoft SQL Server OLE DB Provider 文档中没有包括的最新或其他的信息。 ---- 目录 ---- 1. 产品说明 2. 技术说明 ----------- 1. 产品说明 ----------- SQLOLEDB,Microsoft SQL Server OLE DB 提供者,为希望从一个或多个 SQL Server 存取数据的用户提供了接口。 ----------- 2. 技术说明 ----------- 2.1 对 SQLOLEDB 属性所作的改变 请注意 SQLOLEDB 属性有下列改变: * DBPROP_INIT_DATASOURCE 属性现在用于指定正在运行 SQL Server 的服务器的名称。它不再用于指定数据库名称。 * DBPROP_INIT_CATALOG 属性现在用于指定初始化数据库。 * 不再支持 DBPROP_INIT_LOCATION 属性。 * 支持 DBPROP_AUTH_INTEGRATED 属性。如果将 DBPROP_AUTH_INTEGRATED 设置为“SSPI”,则使用集成安全设置。如果 设置为空值 BSTR 指针,则使用 SQL Server 安全设置。 * 不再支持 SSPROP_AUTH_TRUSTEDCONNECTION 属性。 * 不再支持 DBPROP_INIT_MODE 提供者指定属性。 2.2 如果试在连接上执行一个命令,而此连接上已有一个尚未执行的命令,在满足下述条件时,SQLOLEDB 创建另一连接来执 行新命令: * 将 DBPROP_MULTIPLECONNECTIONS 设置为 VARIANT_TRUE。 * 第一个命令不产生行集,或没有使用服务器光标。 * 连接中没有正在运行的事务。 如果在连接中有正在运行的事务,则执行第二个命令将返回 E_FAIL。如果在连接中没有正在运行的事务,但是 DBPROP_MULTIPLECONNECTIONS 设置为 VARIANT FALSE,则执行第二个命令将返回 DB_E_OBJECTOPEN。 事务和锁定由每一个连接的 SQL Server 管理。如果生成第二个连接,则各自连接上命令并不共享锁定。必须小心确保不 要由于其他命令要求的保持行锁定而造成一个命令阻塞另一命令。 2.3 为通过减少网络传输来改善性能,SQLOLEDB 并不自动地派生参数信息,除非在执行命令之前调用 ICommandWithParameters::GetParameterInfo 或 ICommandPrepare::Prepare。这表明 SQLOLEDB 将不会自动地执行: * 验证用 ICommandWithParameters::SetParameterInfo 指定的数据类型的正确性。 * 将存取器绑定消息中指定的 DBTYPE 映射到正确的参数的 SQL 数据类型。 如果应用程序指定的数据类型与参数的 SQL 数据类型不兼容,则应用程序将收到可能出现的错误消息或某一方法的精度 损失。 为辟免发生上述情况,应使您的应用程序: * 在编写 ICommandWithParameters::SetParameterInfo 程序时,确保 pwszDataSourceType 与参数的 SQL 数据类型匹配。 * 在编写附件程序时,确保绑定到参数的 DBTYPE 数据类型与参数的 SQL 数据类型相同。 * 编写程序来调用 ICommandWithParameters::GetParameterInfo,以便提供者能动态地获得参数的 SQL 数据类型。这将 引起连接到服务器网络额外的循环行程。 2.4 如果行集合使用一个键盘操作的光标,DBPROP_CHANGEINSERTEDROWS 只能设置为 VARIANT_TRUE。