Společnost Microsoft distribuuje Microsoft SQL Server 2008 a Microsoft SQL Server 2008 R2 opravy jako jeden soubor ke stažení. Protože jsou kumulativní opravy, každá nová verze tedy obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 nebo SQL Server 2008 R2 release.
Příznaky
Jde o takovouto situaci:
-
Vytvoření uložené procedury v Microsoft SQL Server 2008 nebo Microsoft SQL Server 2008 R2.
-
Uložená procedura používá proměnná binární rozsáhlý objekt (BLOB).
-
BLOB proměnná se používá ve funkci řetězec.
-
Spuštění uložené procedury.
V tomto scénáři není uložena v mezipaměti plán dotazu pro uloženou proceduru.
Řešení
Informace o kumulativní aktualizaci
SQL Server 2008 Service Pack 1
Oprava tohoto problému byla vydána nejprve v kumulativní aktualizace 10 pro SQL Server 2008 Service Pack 1. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
2279604 Balíček kumulativní aktualizace 10 pro SQL Server 2008 Service Pack 1Poznámka Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Společnost Microsoft doporučuje zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
970365 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008 Service Pack 1 Microsoft SQL Server 2008 opravy hotfix jsou vytvořeny pro konkrétní aktualizace service Pack pro SQL Server. Opravy hotfix serveru SQL Server 2008 Service Pack 1 musí použít k instalaci aplikace SQL Server 2008 Service Pack 1. Ve výchozím žádné opravy hotfix, která je poskytována v aktualizace service pack serveru SQL Server je součástí další aktualizaci service pack pro SQL Server.
SQL Server 2008 Service Pack 2
Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 1 pro SQL Server 2008 Service Pack 2. Další informace o tomto balíčku kumulativní aktualizace klepněte na následující číslo článku databáze Microsoft Knowledge Base:
2289254 Kumulativní aktualizace 1 pro SQL Server 2008 Service Pack 2Poznámka Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
2402659 SQL Server 2008 sestavení, které byly vydány po vydání SQL Server 2008 Service Pack 2
SQL Server 2008 R2
Oprava tohoto problému byla vydána nejprve v kumulativní aktualizaci 4. Další informace o možnostech získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 klepněte na následující číslo článku databáze Microsoft Knowledge Base:
2345451 Kumulativní balíček aktualizace 4 pro SQL Server 2008 R2 Poznámka Vzhledem k tomu, sestavení jsou kumulativní, každá nová verze oprava obsahuje všechny opravy hotfix a opravit všechny opravy zabezpečení, které byly součástí předchozích SQL Server 2008 R2 release. Doporučujeme zvážit použití nejnovější vydání oprava, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
981356 SQL Server 2008 R2 sestavení, které byly vydány po vydání SQL Server 2008 R2
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace
Chcete-li tento problém reprodukovat, postupujte takto:
-
Spusťte následující kód vytvořit dvě uložené procedury ("p_test1" a "p_test2"). "P_test1" používá proměnnou BLOB a "p_test2" používá nvarchar(100) proměnnou.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
-
Spusťte následující kód, který chcete vymazat mezipaměť postup a provést dvě uložené procedury:dbcc freeproccachegoexec p_test1 N'abc'exec p_test2 N'abc'go
-
Spustíte následující kód, který chcete zkontrolovat plán uložený v mezipaměti: 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: Pokud existuje mnoho souběžné spuštění uložené procedury Microsoft SQL Server 2008 nebo Microsoft SQL Server 2008 R2 instance tohoto typu, může docházet k blokování, které je způsobené uzamčení kompilace v instanci. Další informace o serveru SQL Server blokování způsobené uzamčení kompilace popis naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
263889 Popis SQL Server blokování způsobené uzamčení kompilace
Odkazy
Další informace o funkce pro řetězce (Transact-SQL) navštivte následující web společnosti Microsoft:
Funkce pro řetězce (Transact-SQL)Další informace o přírůstkové Model servis pro SQL Server získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
935897 Dílčí Model obsluhy je k dispozici z týmu SQL Server doručit opravy hotfix pro nahlášené potížeDalší informace o schéma názvů pro aktualizace serveru SQL Server klepněte na následující číslo článku databáze Microsoft Knowledge Base:
822499Nové schéma přidělování názvů balíčkům aktualizací softwaru Microsoft SQL Server proPro další informace o terminologii používané v aktualizacích softwaru, klepněte na následující číslo článku k zobrazení článku v databázi Microsoft Knowledge Base:
824684 Popis standardní terminologie používané při popisu aktualizací softwaru společnosti Microsoft