Revisiones del Service Pack 1 de Microsoft SQL Server 2012 se distribuyen como un archivo descargable. Dado que las revisiones son acumulativas, cada versión nueva contiene todas las revisiones y todas las revisiones de seguridad que se incluyeron con la anterior SQL Server 2012 Service Pack 1 revisión.
Síntomas
Cuando ejecuta una instrucción Transact-SQL en SQL Server 2012, recibirá el siguiente mensaje de error:
Sintaxis incorrecta cerca de 'begi'.
Este problema se produce cuando se cumplen las condiciones siguientes:
-
La instrucción contiene una condición IF .
-
La condición IF no contienen instrucciones BEGIN y END .
-
La condición IF va seguida de un bloque BEGIN TRY .
-
Cuando ejecuta la consulta, se recompila el bloque IF .
Solución
Información de actualización acumulativa
Actualización acumulativa 4 para SQL Server 2012 SP1
La corrección para este problema en primer lugar se publicó en la actualización acumulativa 4. Para obtener más información acerca de cómo obtener este paquete de actualización acumulativa para el Service Pack 1 de SQL Server 2012, haga clic en el número de artículo siguiente para ir al artículo de Microsoft Knowledge Base:
2833645 acum actualización 4 para el Service Pack 1 de SQL Server 2012Nota: Dado que las compilaciones son acumulativas, cada versión de corrección nueva contiene todas las revisiones y revisión de todas las revisiones de seguridad que se incluyeron con la anterior Service Pack 1 de SQL Server 2012. Le recomendamos que considere aplicar la versión más reciente de revisión que contenga este hotfix. Para obtener más información, haga clic en el número de artículo siguiente para ir al artículo en Microsoft Knowledge Base:
2772858 the SQL Server 2012 generaciones que se publicaron después del lanzamiento de Service Pack 1 de SQL Server 2012
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".
Más información
Para reproducir este problema, ejecute las siguientes instrucciones de Transact-SQL en 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 CATCHSolución alternativa
Para evitar este problema, agregue las instrucciones BEGIN y END para la condición IF .
Referencias
Para obtener más información sobre el modelo de servicio Incremental de SQL Server, haga clic en el número de artículo siguiente para ir al artículo de Microsoft Knowledge Base:
935897 un modelo de servicio Incremental está disponible en el equipo de SQL Server para entregar revisiones para problemas detectadosPara obtener más información acerca del esquema de nomenclatura para las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para ir al artículo de Microsoft Knowledge Base:
Paquetes de actualización de 822499 esquema de nomenclatura para software de Microsoft SQL ServerPara obtener más información acerca de la terminología de la actualización de software, haga clic en el número de artículo siguiente para ir al artículo de Microsoft Knowledge Base:
824684 descripción de la terminología estándar que se utiliza para describir las actualizaciones de software de Microsoft