سؤال

أحاول إنشاء قفل SQL (SQL Server 2005) المستمر على مستوى الجدول. أنا لا أقوم بتحديث/الاستعلام عن الجدول المحدد ، لكنني بحاجة إلى منع تطبيق طرف ثالث من تحديث الجدول المقفلة كوسيلة لمنع نشر المعاملات (الجدول الذي أرغب في قفله هو المفتاح في معاملتهم التي تتداخل معها معالجتي).

من تجربتي ، يتم قفل الجدول فقط في الوقت الذي تحدث فيه معاملة محددة. أيه أفكار؟

قام مطور الطرف الثالث بتسجيل هذه الميزة كتحسين ، ولكن نظرًا لأنها في منتصف طرح إصدار رئيسي يمكنني أن أتوقع الانتظار لمدة 6 أشهر على الأقل لهذا الغرض. أعلم أن هذا ليس حلاً رائعًا ، لأن برامجهم ستنخفض ولكنها ذات طبيعة حرجة بما يكفي لأننا على استعداد للعيش مع العواقب.

هل كانت مفيدة؟

المحلول

انقل الجدول إلى مجموعة ملفات مختلفة ، ثم قم بتغيير مجموعة الملفات إلى القراءة فقط. سيكون الجدول ساريًا للقراءة فقط:

ALTER DATABASE dbName 
   ADD FILEGROUP ReadOnlyFG;
GO

ALTER DATABASE dbName 
   ADD FILE (
    NAME = ...,
    FILENAME = '...')
   TO FILEGROUP ReadOnlyFG;
GO

ALTER TABLE tableName MOVE TO ReadOnlyFG;
GO

ALTER DATABASE dbName
   MODIFY FILEGROUP ReadOnlyFG READONLY;

نصائح أخرى

أعد تسمية الجدول وعندما يكون الطرف الثالث جاهزًا لإعادة تسميته إلى ما يجب أن يكون

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top