मैं ऑडिट ट्रिगर से कुछ प्रकार के लेनदेन आईडी को संग्रहीत करने पर विचार कर रहा था। समाधान इस पोस्ट SQL Server Triggers - grouping by transactions में sys.dm_tran_current_transaction का उपयोग करने के लिए प्रतीत होता है।ऑडिट ट्रिगर में वर्तमान लेनदेन आईडी
हालांकि, मैं इस का उपयोग नहीं कर सकते क्योंकि एसक्यूएल बयान चल उपयोगकर्ता खाता "दृश्य सर्वर स्थिति" अनुमति और त्रुटि में परिणाम नहीं होगा:
Msg 297, Level 16, State 1, Line 3 The user does not have permission to perform this action.
किसी को भी इस दृश्य के लिए एक विकल्प के बारे में पता है कि इस दृश्य से चयन करने की अनुमति देने के लिए ट्रिगर पर एक समान लेनदेन आईडी या "EXECUTE AS के साथ" उपयोग करने का एक तरीका प्रदान करेगा।
"EXECUTE AS के साथ" मेरे प्रयासों से ऐसा लगता है कि सर्वर स्तर की अनुमतियां नहीं चलती हैं, जो वास्तव में अपेक्षित है क्योंकि यह डेटाबेस उपयोगकर्ता का प्रतिरूपण कर रहा है।
इस विषय पर एमएसडीएन विषय के अतिरिक्त लिंक के लिए धन्यवाद, बहुत जानकारीपूर्ण। –
क्लब लॉल में आपका स्वागत है। आपके साथ, अब हम ग्रह पर 4 लोग हैं जो वास्तव में उस लेख को पढ़ते हैं। –
यदि आपके पास कई ट्रिगर्स हैं, तो आप उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन के अंदर दृश्य को क्वेरी कर सकते हैं, और प्रमाण पत्र के साथ उस फ़ंक्शन पर हस्ताक्षर कर सकते हैं (जैसा कि उत्तर # 6 में उत्तर दिया गया है http://dbaspot.com/sqlserver-programming/197082- कहीं- किसी भी कार्य-कथन-रिटर्न-लेन-देन identific-आईडी-बीच-begin-ट्रांस प्रतिबद्ध-trans.html)। फिर आप उस ट्रिगर के अंदर उस फ़ंक्शन का उपयोग कर सकते हैं। इसलिए, जब आप कोई परिवर्तन करने का निर्णय लेते हैं तो आपको एक ही ऑब्जेक्ट पुनः हस्ताक्षर करना होगा। –