Microsoft SQL Server 2012 Service Pack 1 düzeltmeleri tek bir indirilebilir dosya olarak dağıtılır. Düzeltmelerin toplu olduğu göz önüne alındığında, her yeni sürüm önceki SQL Server 2012 Service Pack 1 düzeltme sürümüne dahil olan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir.
Belirtiler
SQL Server 2012'de bir Transact-SQL deyimi çalıştırdığınızda aşağıdaki hata iletisini alırsınız:
'begi' yakınında yanlış söz dizimi.
Bu sorun, aşağıdaki koşullar doğru olduğunda oluşur:
-
deyimi bir IF koşulu içerir.
-
EĞER koşulu BEGIN ve END deyimlerini içermez.
-
IF koşulunun ardından BEGIN TRY bloğu eklenir.
-
Sorguyu çalıştırdığınızda EĞER bloğu yeniden derlenmiştir.
Çözüm
Toplu güncelleştirme bilgileri
SQL Server 2012 SP1 için Toplu Güncelleştirme 4
Bu sorunun düzeltmesi ilk olarak Toplu Güncelleştirme 4'te yayımlandı. SQL Server 2012 SP1 için bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleye gitmek için aşağıdaki makale numarasını tıklatın:
2833645 SQL Server 2012 SP1 için toplu güncelleştirme 4Not Derlemelerin toplu olduğu göz önüne alındığında, her yeni düzeltme sürümü önceki SQL Server 2012 SP1 düzeltme sürümüne dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı göz önünde bulundurmanızı öneririz. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleye gitmek için aşağıdaki makale numarasına tıklayın:
2772858 SQL Server 2012 Service Pack 1 yayımlandıktan sonra yayımlanan SQL Server 2012 derlemeleri
Durum
Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Ek Bilgi
Bu sorunu yeniden oluşturmak için, SQL Server 2012'de aşağıdaki Transact-SQL deyimlerini çalıştırın: @I INTIF object_id('tempdb.. #temptable')CREATE TABLE #temptable #temptable(id INT)INSERT INTO #TEMPTABLE VALUES (1),(2),(3);IF year(getdate())=2012 SELECT @i=(SELECT COUNT(*) AS nr FROM #temptable);BEGIN TRYSELECT 'message'END TRYBEGIN CATCH SELECTERROR_MESSAGE()END CATCH
Geçici Çözüm
Bu sorunu geçici olarak çözmek için, EĞER koşuluna BEGIN ve END deyimlerini ekleyin.
Başvurular
SQL Server için Artımlı Hizmet Modeli hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleye gitmek için aşağıdaki makale numarasını tıklatın:
935897 Bildirilen sorunlara yönelik düzeltmeleri sunmak üzere SQL Server ekibinden Artımlı Hizmet Modeli sağlanıyor SQL Server güncelleştirmelerinin adlandırma şeması hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleye gitmek için aşağıdaki makale numarasını tıklatın:
822499 Microsoft SQL Server yazılım güncelleştirme paketleri için adlandırma şeması Yazılım güncelleştirme terminolojisi hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleye gitmek için aşağıdaki makale numarasını tıklatın:
824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması