Firma Microsoft dystrybuuje poprawki dla programów Microsoft SQL Server 2008 i Microsoft SQL Server 2008 R2 jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dla programu SQL Server 2008 lub SQL Server 2008 R2.
Objawy
Rozważmy następujący scenariusz:
- Procedurę składowaną tworzy się w programie Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2.
- Procedura składowana używa zmiennej BLOB (binary large object).
- Zmienna BLOB jest używana w funkcji ciągu.
- Wykonywano procedurę składowaną.
W tym scenariuszu plan kwerendy dla procedury składowanej nie jest buforowany.
Rozwiązanie
Informacje o aktualizacji zbiorczej
SQL Server 2008 z dodatkiem Service Pack 1
Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w aktualizacji zbiorczej 10 dla programu SQL Server 2008 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2279604 Pakiet aktualizacji zbiorczej 10 dla dodatku Service Pack 1 SQL Server 2008Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
970365 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 1 SQL Server 2008 Poprawki Microsoft SQL Server 2008 są tworzone dla określonych SQL Server dodatków Service Pack. Należy zastosować poprawkę dodatku Service Pack 1 dla programu SQL Server 2008 do instalacji dodatku Service Pack 1 dla programu SQL Server 2008. Domyślnie każda poprawka dostępna w dodatku Service Pack dla programu SQL Server jest uwzględniona w następnym dodatku Service Pack dla programu SQL Server.
Dodatek Service Pack 2 dla programu SQL Server 2008
Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w aktualizacji zbiorczej 1 dla dodatku Service Pack 2 dla programu SQL Server 2008. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2289254 Aktualizacja zbiorcza 1 dla dodatku Service Pack 2 SQL Server 2008Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2402659 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 2 SQL Server 2008
SQL Server 2008 R2
Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 4. Aby uzyskać więcej informacji dotyczących sposobu uzyskania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
2345451 Pakiet aktualizacji zbiorczej 4 dla systemu SQL Server 2008 R2 Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń z poprzednich wersji poprawek SQL Server 2008 R2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
981356 Kompilacje SQL Server 2008 R2 wydane po wydaniu SQL Server 2008 R2
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
Aby odtworzyć ten problem, wykonaj następujące czynności:
Uruchom poniższy kod, aby utworzyć dwie procedury składowane ("p_test1" i "p_test2"). "P_test1" używa zmiennej BLOB, a "p_test2" używa zmiennej nvarchar(100).use tempdb
przejdź
Jeśli OBJECT_ID('p_test1') nie jest wartością null, upuść procedurę p_test1
Jeśli OBJECT_ID('p_test2') nie jest wartością null, upuść procedurę p_test2
przejdź
Tworzenie p_test1 proceduralnej
@s nvarchar(max)
Jak
rozpoczynać
select * from sys.objects
where name = UPPER(@s)
koniec
przejdź
Tworzenie p_test2 procedur
@s nvarchar(100)
Jak
rozpoczynać
select * from sys.objects
where name = UPPER(@s)
koniec
przejdźUruchom następujący kod, aby wyczyścić pamięć podręczną procedur i wykonać dwie procedury składowane:dbcc freeproccache
przejdź
exec p_test1 N'abc'
exec p_test2 N'abc'
przejdźUruchom następujący kod, aby sprawdzić plan buforowany: select object_name(CONVERT(int;a.value)), cp.*
z sys.dm_exec_cached_plans cp
zastosuj krzyżowo sys.dm_exec_plan_attributes(cp.plan_handle) a
gdzie cp.objtype = 'Proc'
and a.attribute = 'objectID'
Uwaga Jeśli istnieje wiele jednoczesnych wykonań tego rodzaju procedury składowanej w wystąpieniu programu Microsoft SQL Server 2008 lub Microsoft SQL Server 2008 R2, może wystąpić blokowanie spowodowane blokadami kompilacji w wystąpieniu.
Aby uzyskać więcej informacji na temat blokowania programu SQL Server powodowanego przez blokady kompilacji, zobacz następujący artykuł z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
263889 Opis blokowania SQL Server spowodowanego przez blokady kompilacji
Źródła informacji
Aby uzyskać więcej informacji o funkcjach tekstowych (Transact-SQL), odwiedź następującą witrynę firmy Microsoft w sieci Web:
Funkcje tekstowe (Transact-SQL) Aby uzyskać więcej informacji dotyczących modelu obsługi przyrostowej dla programu SQL Server, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
935897 Zespół SQL Server udostępnia model obsługi przyrostowej w celu dostarczania poprawek dla zgłoszonych problemów
Aby uzyskać więcej informacji dotyczących schematu nazewnictwa aktualizacji programu SQL Server, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
822499 Nowy schemat nazewnictwa pakietów aktualizacji oprogramowania firmy Microsoft SQL Server Aby uzyskać więcej informacji dotyczących terminologii związanej z aktualizacjami oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft