Poprawki programu Microsoft SQL Server 2012 z dodatkiem Service Pack 1 są rozpowszechniane jako jeden plik do pobrania. Biorąc pod uwagę, że poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki dodatku Service Pack 1 SQL Server 2012.
Symptomy
Po uruchomieniu instrukcji Transact-SQL w SQL Server 2012 jest wyświetlany następujący komunikat o błędzie:
Nieprawidłowa składnia w pobliżu "begi".
Ten problem występuje, gdy spełnione są następujące warunki:
-
Instrukcja zawiera warunek JEŻELI.
-
Warunek JEŻELI nie zawiera instrukcji BEGIN i END.
-
Po warunku JEŻELI występuje blok BEGIN TRY.
-
Blok JEŻELI zostanie ponownie skompilowany po uruchomieniu zapytania.
Rozwiązanie
Informacje o aktualizacji zbiorczej
Aktualizacja zbiorcza 4 dla SQL Server 2012 z dodatkiem SP1
Poprawka rozwiązła ten problem została opublikowana po raz pierwszy w aktualizacji zbiorczej 4. Aby uzyskać więcej informacji na temat uzyskiwania tego zbiorczego pakietu aktualizacji dla SQL Server 2012 z dodatkiem SP1, kliknij następujący numer artykułu, aby przejść do tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2833645 Aktualizacja zbiorcza 4 dla SQL Server 2012 z dodatkiem SP1Note Biorąc pod uwagę, że kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki z SQL Server 2012 z dodatkiem SP1. 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 Microsoft Knowledge Base:
2772858 Kompilacje SQL Server 2012, które zostały wydane po wydaniu dodatku Service Pack 1 SQL Server 2012
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Więcej informacji
Aby odtworzyć ten problem, uruchom następujące instrukcje Transact-SQL w SQL Server 2012: DECLARE @i INTIF object_id('tempdb.. #temptable') IS NOT NULLDROP TABLE #temptableCREATE TABLE #temptable (id INT)INSERT INTO #TEMPTABLE VALUES (1);(2);(3);JEŻELI rok(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);BEGIN TRYSELECT 'message'END TRYBEGIN CATCH SELECTERROR_MESSAGE()END CATCH
Obejście
Aby obejść ten problem, dodaj instrukcje BEGIN i END do warunku JEŻELI.
Informacje
Aby uzyskać więcej informacji na temat przyrostowego modelu obsługi dla SQL Server, kliknij następujący numer artykułu, aby przejść do tego artykułu z bazy wiedzy Microsoft Knowledge Base:
935897 Przyrostowy model obsługi jest dostępny od zespołu SQL Server w celu dostarczenia poprawek zgłoszonych problemów Aby uzyskać więcej informacji na temat schematu nazewnictwa aktualizacji SQL Server, kliknij następujący numer artykułu, aby przejść do artykułu z bazy wiedzy Microsoft Knowledge Base:
822499 Schemat nazewnictwa dla pakietów aktualizacji oprogramowania firmy Microsoft SQL Server Aby uzyskać więcej informacji na temat terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu, aby przejść do artykułu z bazy wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft