डेटा कैप्चर बदलें - यह कैसे जानें कि बदलाव किसने किया?


10

सीडीसी द्वारा पहचाने गए परिवर्तन को ट्रैक करने वाले।

मेरी डेटाइम हैक की तर्ज पर मैंने sder_sname को एक नए क्षेत्र के रूप में जोड़ने का प्रयास किया, जिसमें cdc परिवर्तन ट्रैक टेबल पर डिफ़ॉल्ट मान के साथ एक नया क्षेत्र है। लेकिन, यह सीडीसी प्रक्रिया के मालिक को वापस करने के लिए लगता है न कि उस उपयोगकर्ता को जिसने बेस टेबल पर बदलाव शुरू किया है। मैंने original_login भी आज़माया लेकिन यह sql सेवा खाता लॉगिन लौटाता है। फिर से, सीडीसी प्रक्रिया से जुड़े होने की संभावना है न कि उस उपयोगकर्ता से जिसने बदलाव की पहल की है।

मुझे स्टैक-ओवरफ्लो पर एक समान प्रश्न मिला, लेकिन सामने के छोर से या ट्रिगर के माध्यम से परिवर्तनों को ट्रैक करने के अलावा कोई जवाब नहीं है, जो सीडीसी का उपयोग करने के उद्देश्य को हराने के लिए लगता है। मैं रेपोस्ट नहीं करूंगा, लेकिन चूंकि मूल स्टैकओवरफ़्लो पर था, मैंने सोचा कि मैं इसे यहाँ एक कोशिश करूँगा, खासकर अगर R2 या 2012 ने एक बेहतर तरीका पेश किया है।

तो, संक्षेप में: मुझे कैसे पता चलेगा कि परिवर्तन डेटा कैप्चर में किसने बदलाव किया है?

जवाबों:


7

मैंने इस बारे में एक बग दर्ज किया, लेकिन इसे "डिजाइन द्वारा" बंद कर दिया गया।

http://connect.microsoft.com/SQLServer/feedback/details/283707/cdc-options-to-capture-more-data-username-date-time-etc

दुर्भाग्यवश आपको यह जानकारी प्राप्त करने के लिए एक और तकनीक (जैसे SQL ऑडिट या एक ट्रिगर) का उपयोग करना होगा (और कुछ कस्टम कोड इसे CDC डेटा से जितना संभव हो उतना सहसंबंधित करने का प्रयास करें)। इस कमी के बारे में मैंने अपने अध्याय "SQL सर्वर ऑडिट, चेंज ट्रैकिंग एंड चेंज डेटा कैप्चर" में SQL Server MVP डीप डाइव्स (खंड 1) पुस्तक में भी लिखा है ।

मुझे खेद है कि मेरे पास आपके लिए एक बेहतर समाधान नहीं है, लेकिन सीडीसी की अंतर्निहित क्षमताएं बस आपकी आवश्यकताओं को पूरा करने वाली नहीं हैं। :-(


@Rhomas आप अभी भी आइटम के लिए वोट कर सकते हैं, भले ही वे बंद हों - वे कभी-कभार संशोधित होते हैं। मतदान से भी अधिक उपयोगी एक टिप्पणी जोड़ना है जिसमें व्यवसाय की आवश्यकता के विवरणों को शामिल किया गया है जो इस जानकारी को उपयोगी बना देगा, जिसमें शायद लापता कार्यक्षमता के आसपास काम करने के लिए चीजों को रिफैक्ट करने की लागत भी शामिल है। मैं गुणात्मक डेटा मात्रात्मक डेटा पल्ला झुकना सकते हैं कि कैसे के बारे में थोड़ा लिखा ...
हारून बर्ट्रेंड

यह जानकर अच्छा लगा कि मुझे लगा कि मतदान के लिए बंद का मतलब है। मैंने अपनी टिप्पणी में बताया कि ओरेकल अपने सीडीसी कार्यान्वयन में यह प्रदान करता है। यह सॉर्ट तार्किक लगता है। docs.oracle.com/cd/A91202_01/901_doc/server.901/a90237/…
RThomas

6

आप कॉलम को जोड़ सकते हैं और उपयोगकर्ता को डालने / अपडेट / डिलीट करने के लिए टेबल पर एक ट्रिगर लगा सकते हैं और cdc तब इसे स्टोर करेंगे। आप संदर्भ जानकारी का उपयोग करके या वास्तविक सत्र से उपयोगकर्ता नाम पारित करके यूआई से या तो उपयोगकर्ता नाम ले सकते हैं

SET @CapturedBy = CAST(REPLACE(CAST(CONTEXT_INFO() AS VARCHAR(10)),CHAR(0),'''''''') AS INT)

IF(@CapturedBy) IS NULL
    BEGIN
       SELECT @CapturedBy = P.[Code]
       FROM sys.dm_exec_sessions AS S
         INNER JOIN [dbo].[Person] AS P
          ON S.[login_name] = P.[User_Name]
       WHERE S.[session_id] = @@spid
    END

0

क्या आप मुख्य तालिका पर एक UpdatedBy फ़ील्ड जोड़ सकते हैं, इसे SUSER_NAME () या ORIGINAL_LOGIN () में डिफ़ॉल्ट रूप से सेट करें और क्या वह डेटा सीडीसी द्वारा पॉप्युलेट किया गया है? मुझे विश्वास है कि आपको वही जानकारी मिलेगी जिसकी आपको तलाश है।


यह केवल आपको svc खाता / सीडीसी के मालिक के रूप में मिलता है, आप ध्यान दें कि मैंने उन चीजों की कोशिश की और परिणाम को अपने मूल प्रश्न में वापस कर दिया। फरवरी
RThomas

आपकी टिप्पणी ने कहा कि आपने इसे ChangeData तालिका में जोड़ा है। मैं मूल तालिका के बारे में बात कर रहा हूं ChangeData तालिका पर आधारित है। हालांकि मुझे एहसास हुआ कि मैंने पोस्ट करने के बाद यह केवल आवेषण के लिए काम करेगा
शेफ

आह, वह पकड़ नहीं था। मुझे अब आपका क्या कहना है।
RThomas
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.