Vengono distribuite le correzioni di Microsoft SQL Server 2012 Service Pack 1 come un unico file scaricabile. Dato che le correzioni sono cumulative, ogni nuova versione contiene tutte le correzioni rapide e rilascio delle correzioni per tutte le correzioni di protezione che erano incluse nelle precedenti di SQL Server 2012 Service Pack 1.
Sintomi
Quando si esegue un'istruzione Transact-SQL in SQL Server 2012, viene visualizzato il seguente messaggio di errore:
Sintassi non corretta in prossimità di 'begi'.
Questo problema si verifica quando sono vere le seguenti condizioni:
-
L'istruzione contiene una condizione IF .
-
La condizione IF non contiene istruzioni BEGIN ed END .
-
La condizione IF è seguita da un blocco TRY iniziare .
-
Il blocco se viene ricompilato quando si esegue la query.
Risoluzione
Informazioni sull'aggiornamento cumulativo
Aggiornamento cumulativo 4 per SQL Server 2012 SP1
La correzione di questo problema è stata rilasciata nell'aggiornamento cumulativo 4. Per ulteriori informazioni su come ottenere il pacchetto di aggiornamento cumulativo per SQL Server 2012 SP1, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
2833645 cumulativo aggiornamento 4 per SQL Server 2012 SP1Nota: Dato che le versioni sono cumulative, ogni nuova versione di correzione contiene tutti gli hotfix e tutte le correzioni incluse in SQL Server 2012 SP1 precedente correggere rilascio. Si consiglia di considerare l'ipotesi di applicare la versione più recente contenente tale hotfix. Per ulteriori informazioni, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
2772858 di SQL Server 2012 versioni rilasciate dopo il rilascio di Service Pack 1 di SQL Server 2012
Stato
Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".
Ulteriori informazioni
Per riprodurre il problema, eseguire le seguenti istruzioni Transact-SQL in SQL Server 2012:
DECLARE @i INT
IF object_id('tempdb..#temptable') IS NOT NULL
DROP TABLE #temptable
CREATE TABLE #temptable (id INT)
INSERT INTO #temptable VALUES (1),(2),(3);
IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);
BEGIN TRY
SELECT 'message'
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE()
END CATCH
Soluzione alternativa
Per risolvere questo problema, aggiungere la condizione IF istruzioni BEGIN ed END .
Riferimenti
Per ulteriori informazioni sul modello di manutenzione incrementale per SQL Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
935897 un modello di manutenzione incrementale è disponibile dal team di SQL Server per offrire gli hotfix per i problemi segnalatiPer ulteriori informazioni sullo schema di denominazione per gli aggiornamenti di SQL Server, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
I pacchetti di aggiornamento dello schema di denominazione 822499 per il software di Microsoft SQL ServerPer ulteriori informazioni sulla terminologia degli aggiornamenti software, fare clic sul numero riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:
824684 descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft