تصحيح: انتهاك وصول عند تنفيذ إجراء مخزن الذي يستخدم مؤشر على جدول متغير في SQL Server

هام: تمت ترجمة هذه المقالة باستخدام برامج مايكروسوفت للترجمة الآلية ومن المحتمل ان يتم تحريرها او تدقيقها بعد ذلك من خلال تكنولوجيا منصة مجموعات الترجمة(CTF) او من خلال مترجم بشري. تقدم لك شركة مايكروسوفت هذه المقالات المترجمة بشكل آلي او بالترجمة البشرية او بعد تحريرها وتدقيقها من قبل مجموعات الترجمة حتى تمكنكم من الوصول إلى جميع المقالات الموجودة في قواعد المعرفة لديها بلغات مختلفة. إلا أن المقالات المترجمة قد تحتوي على أخطاء في المفردات او بناء الجمل او النحو. وعليه، فإن شركة مايكروسوفت ليست مسؤولة عن اية أخطاء او عدم دقة في الترجمة او أية أضرار قد تحدث نتيجة أخطاء في ترجمة محتويات النص او استخدامه من قبل العملاء.

اضغط هنا لرابط المقالة باللغة الانجليزية3138930
الأعراض
افترض أن إنشاء إجراء مخزن يستخدم مؤشر على جدول متغير في عام 2012 Microsoft SQL Server أو SQL Server 2014. بالإضافة إلى ذلك، الإجراء المخزن بتحديث الجدول باستخدام عبارةWHERE CURRENT OF جنبا إلى جنب مع المؤشر.

على سبيل المثال، الإجراء المخزن الخاص بك قد تشبه ما يلي:
CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

عند تنفيذ الإجراء المخزن الخاص بك باستخدام نظام sp_refreshsqlmodule إجراء مخزن، قد يحدث خرق في وصول، وقد تتلقى رسائل خطأ مشابهة لما يلي:
جي إس 596، مستوى 21، 1Cannot حالة متابعة التنفيذ لجلسة العمل في حالة إنهاء العمل. Msg 0، مستوى 20 حدث خطأ هام 0A الدولة في الأمر الحالي. النتائج، وجدت، يجب أن يتم تجاهل.

في هذه الحالة، تتم كتابة الأخطاء مشابهة لما يلي أيضا إلى سجلات خطأ SQL Server:
تاريخ time.730 سقلدومبيكسسيبتيونهاندلير spid51: 51 عملية إنشاء استثناء فادح c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server يتم إنهاء هذه العملية.
date time.730 spid51 * *******************************************************************************
تاريخ time.730 spid51 *
تاريخ time.730 spid51 * "بدء تفريغ المكدس":
تاريخ time.730 spid51 * التاريخ الوقت spid 51
تاريخ time.730 spid51 *
تاريخ time.730 spid51 *
تاريخ time.730 spid51 * "عنوان الاستثناء" = 00007FFC270236D5 Module(sqllang+00000000005036D5)
تاريخ time.730 spid51 * "رمز الاستثناء" = c0000005 EXCEPTION_ACCESS_VIOLATION
تاريخ time.730 spid51 * حدث "انتهاك وصول" قراءة عنوان 0000006F00620074
تاريخ time.730 spid51 * بايت 136 المخزن المؤقت للإدخال-
تاريخ time.730 spid51 * تنفيذ sp_refreshsqlmodule N ' [dbo]. [usp_TestSP] '
تاريخ time.730 spid51 *
تاريخ time.730 spid51 *

الحل

معلومات التحديث التراكمي

تم إصلاح هذه المشكلة في التحديثات التالية:
توصية: تثبيت آخر تحديث تراكمي ل SQL Server

يحتوي التحديث التراكمي كل جديدة ل SQL Server على كافة الإصلاحات العاجلة وكافة إصلاحات الأمان التي تم تضمينها مع التحديث التراكمي السابق. تحقق من أحدث التحديثات التراكمية ل SQL Server:
تصريح
أقرت Microsoft أن هذه مشكلة في منتجات Microsoft المسردة في قسم "ينطبق على".
مراجع
التعرف المصطلحات تستخدم Microsoft لوصف تحديثات البرامج.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 3138930 - آخر مراجعة: 05/31/2016 10:50:00 - المراجعة: 3.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtar
تعليقات