使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

假设你使用 sqlncli11 ODBC 驱动程序来访问 Microsoft SQL Server 2012 或应用程序中的 SQL Server 2014。 使用服务器游标和 SQLFetch/ SQLGETDATA 函数访问 SQL server 中的某些二进制大型对象(BLOB)数据时,尤其是对于较大数据类型(如 varbinary (max)或 varchar (max))而言,性能问题会发生。

原因

这是在 SQL Server 2012 ODBC 驱动程序中实现 SQLFetch/ SQLGetData 函数的设计问题。 当查询使用任何服务器游标时,ODBC 驱动程序将在SQLFetch实现期间调用sp_cursorfetch ,并且服务器会将所有 BLOB 发送到客户端。 然后,在执行 SQLGetData 时, sp_cursor 将再次引入所有 BLOB。 这将显著影响较大数据类型(如 varbinary (max)或 varchar (max))的性能。

解决方案

累积更新信息

新的实现调用 sp_cursoroption 在 sp_cursorfetch之前获取 TEXTPTR_ONLY,然后调用 sp_cursoroption 以将其放回 TEXTDATA 中的 sp_cursor。 这可以提高性能。在 SQL Server 的以下累积更新中,此问题首先已修复。

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 我们建议你下载并安装 SQL Server 的最新累积更新:

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×