سؤال

هل يعرف أحد طريقة لفرض تلميح nolock على جميع المعاملات الصادرة عن مستخدم معين؟أرغب في تقديم تسجيل دخول لفريق الدعم للاستعلام عن نظام الإنتاج، ولكنني أريد حمايته من خلال فرض حظر على كل ما يفعلونه.أنا أستخدم SQL Server 2005.

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

المحلول

هذه طريقة مؤلمة وصعبة للقيام بذلك، ولكن هذا ما نفعله حيث أعمل.نحن نستخدم أيضًا asp الكلاسيكي لذلك نستخدم مكالمات SQL المضمنة.نحن في الواقع نقوم بتغليف استدعاء SQL في وظيفة (هنا يمكنك التحقق من وجود مستخدم معين) وإضافة "SET TRANSACTION Isolation LEVEL READ UNCOMMITTED" إلى بداية المكالمة.

أعتقد من الناحية الوظيفية أن هذا هو نفس تلميح عدم القفل.آسف، ليس لدي إجابة SQL خالصة، سأكون مهتمًا بمعرفة ما إذا كنت تجد طريقة جيدة للقيام بذلك.

نصائح أخرى

يمكنك تكوين SQL Management Studio الخاص بموظفي الدعم الخاص بك لتعيين مستوى عزل المعاملة الافتراضي على القراءة غير الملتزم بها (أدوات->خيارات->تنفيذ الاستعلام->SQL Server->متقدم).هذا من الناحية الوظيفية يشبه وجود تلميحات NOLOCK على كل شيء.

الجانب السلبي هو أنه سيتعين عليك القيام بذلك لكل عضو في فريق الدعم الخاص بك، وسيكون لديهم القدرة على تغيير التكوين في SQL Management Studio الخاص بهم.

حسنًا، عليك توضيح ما تحاول القيام به هنا.

إذا كنت تحاول تقليل تأمين قاعدة البيانات وربما تزويد مستخدمي الدعم لديك ببيانات قد لا يتم الالتزام بها أبدًا في قاعدة البيانات.بينما يسمح لهم بكتابة أي شيء يريدونه في قاعدة البيانات، فإن nolock هو الحل الأمثل.سوف تحصل على المكافأة الإضافية المتمثلة في أن المستخدم الخاص بك سيظل قادرًا على زيادة مستوى العزل الخاص به باستخدام أمر SET TRANSACTION Isolation LEVEL.

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

أجد أن NOLOCK يساء فهمه بشكل كبير عند تجاوز سعة المكدس.

يمكنك إنشاء مستخدم محدود لفريق الدعم، ثم كتابة الإجراءات المخزنة أو طرق العرض باستخدام تلميح nolock.ثم قم بمنح حق الوصول إلى هؤلاء فقط وليس الوصول المباشر إلى تحديد الجدول.

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

ولسوء الحظ، فإن تقييد المستخدمين بمقدمي الخدمة يتعارض مع الغرض من ذلك.كنت آمل أن تكون هناك طريقة ما يمكنني من خلالها السماح لهم بالاستعلام عن كل شيء وبالتالي تعزيز مهاراتهم في استكشاف الأخطاء وإصلاحها.شكرا لشباب مساعدتكم.

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