Исправление: План запроса для хранимой процедуры не кэшируются, если хранимая процедура использует переменную типа BLOB и переменная используется в строковой функции в Microsoft SQL Server 2008 или в Microsoft SQL Server 2008 R2

Переводы статьи Переводы статьи
Код статьи: 2380435 - Vizualiza?i produsele pentru care se aplic? acest articol.
Корпорация Майкрософт распространяет Microsoft SQL Server 2008 и Microsoft SQL Server 2008 R2 исправления файл с исправлениями. Так как исправления являются накопительными, каждый новый выпуск содержит все исправления, и все исправления, входившие в состав предыдущих SQL Server 2008 и SQL Server 2008 R2 исправление выпуска.
Развернуть все | Свернуть все

В этой статье

Проблема

Рассмотрим описанную ниже ситуацию.:
  • Создание хранимой процедуры в Microsoft SQL Server 2008 или в Microsoft SQL Server 2008 R2.
  • Хранимая процедура использует большой двоичный объект (BLOB) переменной.
  • Строковые функции используется переменная типа BLOB.
  • Выполнение хранимой процедуры.
В этом случае план запроса для хранимой процедуры не кэшируется.

Решение

Сведения о накопительном обновлении

Пакет обновления 1 для SQL Server 2008

Исправление, устраняющее эту проблему, сначала было выпущено в 10 накопительного обновления для SQL Server 2008 с пакетом обновления 1 (SP1). Для получения дополнительных сведений о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
2279604Накопительный пакет обновления 10 для SQL Server 2008 с пакетом обновления 1 (SP1)
Примечание.Поскольку сборки являются накопительными, каждый новый выпуск исправление содержит все исправления, и все исправления, входившие в состав предыдущих SQL Server 2008 исправление выпуска. Корпорация Майкрософт рекомендует, чтобы учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
970365SQL Server 2008 выполняет построение, выпущенных после пакета обновления 1 для SQL Server 2008
Microsoft SQL Server 2008 исправлениях создаются для определенных пакетов обновления для SQL Server. Необходимо применить исправление SQL Server 2008 с пакетом обновления 1 (SP1) для установки SQL Server 2008 с пакетом обновления 1 (SP1). По умолчанию все исправления, входящие в пакет обновления SQL Server включено в следующий пакет обновления для SQL Server.

SQL Server 2008 с пакетом обновления 2

Исправление этой уязвимости первого выпуска в накопительное обновление 1 для SQL Server 2008 с пакетом обновления 2 (SP2). Для получения дополнительных сведений о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
2289254Накопительное обновление 1 для SQL Server 2008 с пакетом обновления 2 (SP2)
Примечание.Поскольку сборки являются накопительными, каждый новый выпуск исправление содержит все исправления, и все исправления, входившие в состав предыдущих SQL Server 2008 исправление выпуска. Рекомендуется, чтобы учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
2402659SQL Server 2008 построений, которые были выпущены после выхода SQL Server 2008 с пакетом обновления 2 (SP2)

SQL Server 2008 R2

Исправление, устраняющее эту проблему, сначала было выпущено в накопительное обновление 4. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2 щелкните следующий номер статьи базы знаний Майкрософт:
2345451Накопительный пакет обновления 4 для SQL Server 2008 R2
Примечание.Поскольку сборки являются накопительными, каждый новый выпуск исправление содержит все исправления, и все исправления, входившие в состав предыдущих SQL Server 2008 R2 исправление выпуска. Рекомендуется, чтобы учесть применение последний выпуск исправления, содержащего это исправление. Для получения дополнительных сведений обратитесь к следующей статье Базы Знаний Майкрософт::
981356SQL Server 2008 R2 построений, которые были выпущены после выхода SQL Server 2008 R2

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в разделе «Применяется к»..

Дополнительная информация

Чтобы воспроизвести эту проблему, выполните следующие действия.
  1. Выполните следующий код для создания двух хранимых процедур («p_test1» и «p_test2»). "P_test1" используется переменная типа BLOB, а «p_test2» использует тип nvarchar(100).
    use tempdb
    go
    if OBJECT_ID('p_test1') is not null drop proc p_test1
    if OBJECT_ID('p_test2') is not null drop proc p_test2
    go
    create proc p_test1
    @s nvarchar(max)
    as
    begin
    select * from sys.objects 
    where name = UPPER(@s)
    end
    go
    create proc p_test2
    @s nvarchar(100)
    as
    begin
    select * from sys.objects 
    where name = UPPER(@s)
    end
    go
    
  2. Выполните следующий код для очистки кэша процедур, и выполнить эти хранимые процедуры:
    dbcc freeproccache
    go
    exec p_test1 N'abc'
    exec p_test2 N'abc'
    go
    
  3. Выполните следующий код для проверки кэшированного плана:
    select object_name(CONVERT(int, a.value)), cp.*
    from sys.dm_exec_cached_plans cp
    cross apply sys.dm_exec_plan_attributes(cp.plan_handle) a
    where cp.objtype = 'Proc'
    and a.attribute = 'objectid'
    
    
Примечание.При наличии такого рода хранимой процедуры в Microsoft SQL Server 2008 или экземпляра Microsoft SQL Server 2008 R2 много одновременных выполнений, возможно возникновение блокировки, может быть вызвано компиляции блокировок в экземпляре.

Дополнительные сведения об описании блокировки SQL Server, вызванных компиляции блокировки содержатся в следующей статье Microsoft Knowledge Base:
263889Описание блокировки SQL Server, вызванных компиляции блокировки

Ссылки

Для получения дополнительных сведений о функции строку (Transact-SQL) посетите следующий веб-узел Майкрософт:
Строковые функции (Transact-SQL)
Для получения дополнительных сведений о последовательный модели обслуживания для SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
935897Последовательный модели обслуживания доступна группа разработчиков SQL Server для предоставления исправления для устранения неполадок
Для получения дополнительных сведений о схеме именования для обновления SQL Server щелкните следующий номер статьи базы знаний Майкрософт:
822499Новая схема присвоения имен пакетам обновлений программного обеспечения Microsoft SQL Server
Дополнительные сведения о терминах, используемых при описании обновлений программного обеспечения, см. в следующей статье базы знаний Майкрософт::
824684Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Свойства

Код статьи: 2380435 - Последний отзыв: 15 ноября 2010 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Standard Edition for Small Business
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Workgroup
Ключевые слова: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2380435 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:2380435

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com