SQL الخادم: تعديل "اسم التطبيق" الملكية لأغراض التدقيق

StackOverflow https://stackoverflow.com/questions/323494

سؤال

وكما أننا لا تنفيذ مستخدمي التطبيقات لدينا من المستخدمين في خادم SQL، عندما يتصل ملقم التطبيق لقاعدة بيانات كل تطبيق يستخدم دائما نفس أوراق اعتماد لنعلق على كل قاعدة البيانات.

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

وبدلا من هذا أقترح استخدام الخاصية اسم تطبيق سلسلة الاتصال وقراءة هذا مع الخاصية APP_NAME () داخل الزناد. أنا جربت هذا مع التطبيق بسيطة ويبدو للعمل (في شكل يمكن أن يكون وذلك: التطبيق = اسم التطبيق | العضو = 100).

والسؤال المطروح يا رفاق هو، وهذا هو فكرة سيئة وهل لديك واحد أفضل؟

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

المحلول

SET CONTEXT_INFO للحصول على هذا. انها مجرد ما تحتاجه.

نصائح أخرى

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

وثمة خيار آخر هو لاسترداد عنوان اسم المضيف / IP (SELECT HOST_NAME ()) وتخزينها بدلا من ذلك.

وأنت لا تحتاج بالضرورة معلمة جديدة في كل الإجراء المخزن، كما يمكنك تعديل كل إجراء مخزن (أو على الزناد) لإدراج تلقائيا APP_NAME / اسم المضيف.

وهناك عيب محتمل هو أن أي تعديلات أجريت عبر إدارة Studio لن يكون لها APP_NAME العرف، وعليك أن تترك مع "Studio إدارة مايكروسوفت" باسم المستخدم.

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

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