当您使用 sqlncli11.dll 的 ODBC 驱动程序在应用程序中访问 SQL Server 性能问题发生修复:

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3041859
症状
假定您使用的应用程序中访问 Microsoft SQL Server 2012年或 SQL Server 2014年 sqlncli11.dll ODBC 驱动程序。当您使用服务器游标和SQLFetch/ SQLGetData函数来访问某些二进制大对象 (BLOB) 数据在 SQL Server 中的出现性能问题的特别是对于大型数据类型类似 varbinary (最大) 或 varchar (最大)。
原因
这是一个设计问题实施的SQLFetch/ SQLGetData功能在 SQL Server 2012 ODBC 驱动程序。当查询使用任何服务器游标时的 ODBC 驱动程序在SQLFetch的实现过程中调用sp_cursorfetch并由服务器发送到客户端的所有 BLOB。然后在执行SQLGetDatasp_cursor将再次使所有 BLOB。这将极大地影响 varbinary (最大) 或 varchar (最大) 等大型数据类型的性能。
解决方案

累积更新信息

新的实现调用以获取前sp_cursorfetch,TEXTPTR_ONLY sp_cursoroption并调用sp_cursoroption以将其放回前sp_cursorTEXTDATA。这可以提高性能。

第一次修复该问题的SQL Server累积更新包

建议: 设置 SQL Server 的累积更新
SQL Server 的每个新累积更新包含所有修补程序和所有安全修复程序是附带在以前的累积更新。我们建议您下载并安装最新的累积更新 SQL Server:
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。

警告:本文已自动翻译

属性

文章 ID:3041859 - 上次审阅时间:06/22/2015 14:28:00 - 修订版本: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Service Pack 1

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB3041859 KbMtzh
反馈