Spoločnosť Microsoft distribuuje Microsoft SQL Server 2008 a Microsoft SQL Server 2008 R2 opravy ako jeden súbor na prevzatie. Keďže opravy sú kumulatívne, každé nové vydanie obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL Server 2008 alebo SQL Server 2008 R2 opraviť uvoľnenia.
Príznaky
Predstavte si nasledujúcu situáciu:
-
Môžete vytvoriť uloženú procedúru v Microsoft SQL Server 2008 alebo Microsoft SQL Server 2008 R2.
-
Uložená procedúra používa premennej binárne veľký objekt (BLOB).
-
Premenná BLOB používa reťazec funkciu.
-
Spustíte uloženej procedúry.
V takomto prípade nie je uložený dotaz plán uloženej procedúry.
Riešenie
Kumulatívna aktualizácia informácií
SQL Server 2008 Service Pack 1
Fix pre tento problém bol prvýkrát vydaný v Kumulatívna aktualizácia 10 pre SQL Server 2008 Service Pack 1. Ďalšie informácie o tomto Kumulatívna aktualizácia, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2279604 Kumulatívna aktualizácia balíka 10 pre SQL Server 2008 Service Pack 1Poznámka: Keďže tieto zostavy sú kumulatívne, každé nové vydanie obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL Server 2008 opraviť uvoľnenia. Odporúčame vám zvážiť použitie Najaktuálnejšieho vydania opravy túto rýchlu opravu obsahuje. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:
970365 SQL Server 2008 zostavy, ktoré boli vydané po bola vydaná SQL Server 2008 Service Pack 1 Microsoft SQL Server 2008 rýchlych sú vytvorené pre konkrétne SQL Server service pack. Rýchla oprava SQL Server 2008 Service Pack 1 musíte použiť na inštaláciu balíka SQL Server 2008 Service Pack 1. Predvolene rýchlu opravu, ktorá je súčasťou balíka SQL Server service pack je zahrnutá v ďalšej SQL Server service pack.
SQL Server 2008 Service Pack 2
Fix pre tento problém bol prvýkrát vydaný v kumulatívnej aktualizácii 1 pre SQL Server 2008 Service Pack 2. Ďalšie informácie o tomto Kumulatívna aktualizácia, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2289254 Kumulatívna aktualizácia 1 pre SQL Server 2008 Service Pack 2Poznámka: Keďže tieto zostavy sú kumulatívne, každé nové vydanie obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL Server 2008 opraviť uvoľnenia. Odporúčame vám zvážiť použitie Najaktuálnejšieho vydania opravy túto rýchlu opravu obsahuje. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:
2402659 SQL Server 2008 zostavy, ktoré boli vydané po bola vydaná SQL Server 2008 Service Pack 2
SQL Server 2008 R2
Fix pre tento problém bol prvýkrát vydaný v Kumulatívna aktualizácia 4. Ďalšie informácie o možnostiach získania Táto Kumulatívna aktualizácia balíka SQL Server 2008 R2, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
2345451 Kumulatívna aktualizácia 4 pre SQL Server 2008 R2 Poznámka: Keďže tieto zostavy sú kumulatívne, každé nové vydanie obsahuje všetky rýchle opravy a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúceho SQL Server 2008 R2 opraviť uvoľnenia. Odporúčame vám zvážiť použitie Najaktuálnejšieho vydania opravy túto rýchlu opravu obsahuje. Ďalšie informácie nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na príslušné číslo článku:
981356 SQL Server 2008 R2 zostavy, ktoré boli vydané po bola vydaná SQL Server 2008 R2
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.
Ďalšie informácie
Ak chcete reprodukovať tento problém, postupujte nasledovne:
-
Spustite nasledujúci kód vytvoriť dve uložené procedúry ("p_test1" a "p_test2"). "P_test1" používa premennej BLOB a "p_test2" používa premennej nvarchar(100).use tempdbgoif OBJECT_ID('p_test1') is not null drop proc p_test1if OBJECT_ID('p_test2') is not null drop proc p_test2gocreate proc p_test1@s nvarchar(max)asbeginselect * from sys.objects where name = UPPER(@s)endgocreate proc p_test2@s nvarchar(100)asbeginselect * from sys.objects where name = UPPER(@s)endgo
-
Spustite nasledujúci kód vyrovnávaciu pamäť postup a vykonať dve uložené procedúry:dbcc freeproccachegoexec p_test1 N'abc'exec p_test2 N'abc'go
-
Spustite nasledujúci kód skontrolovať vo vyrovnávacej pamäti plán: select object_name(CONVERT(int, a.value)), cp.*from sys.dm_exec_cached_plans cpcross apply sys.dm_exec_plan_attributes(cp.plan_handle) awhere cp.objtype = 'Proc'and a.attribute = 'objectid'
Poznámka: Ak existuje veľa súbežných spustení tohto druhu uložená procedúra Microsoft SQL Server 2008 alebo Microsoft SQL Server 2008 R2 inštanciu, môžu sa vyskytnúť blokovanie je spôsobené skompilovať locks inštancie. Ďalšie informácie o popise SQL Server blokovanie spôsobené skompilovať locks nájdete v nasledujúcom článku databázy Microsoft Knowledge Base:
263889 Popis SQL Server blokovanie spôsobené skompilovať locks
Odkazy
Ďalšie informácie o funkciách reťazec (Transact-SQL), nájdete na nasledujúcej webovej lokalite spoločnosti Microsoft:
Reťazec funkcie (Transact-SQL)Ďalšie informácie o prírastkové servis Model pre SQL Server, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
935897 Prírastkové servis Model je k dispozícii z SQL Server tímu dodať rýchlych opráv pre nahlásených problémovĎalšie informácie o schéme pomenúvania pre aktualizácie aplikácie SQL Server, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
822499Nová schéma pomenúvania pre balíky aktualizácií softvéru Microsoft SQL ServerĎalšie informácie o terminológii z oblasti aktualizácií softvéru získate po kliknutí na nasledujúce číslo článku publikovaného v databáze Microsoft Knowledge Base:
824684 Popis štandardnej terminológie používanej na popis aktualizácií softvéru od spoločnosti Microsoft