मैं एसक्यूएल सर्वर 2005 में एक अद्यतन क्वेरी कैसे रोलबैक कर सकता हूं?मैं एसक्यूएल सर्वर 2005 में एक अद्यतन क्वेरी कैसे रोलबैक कर सकता हूं?
मुझे कोड में नहीं, एसक्यूएल में ऐसा करने की ज़रूरत है।
मैं एसक्यूएल सर्वर 2005 में एक अद्यतन क्वेरी कैसे रोलबैक कर सकता हूं?मैं एसक्यूएल सर्वर 2005 में एक अद्यतन क्वेरी कैसे रोलबैक कर सकता हूं?
मुझे कोड में नहीं, एसक्यूएल में ऐसा करने की ज़रूरत है।
आप लेनदेन के भीतर निष्पादित किए गए बयान को रोलबैक कर सकते हैं। लेनदेन को कम करने के बजाय लेनदेन को रोलबैक करें।
आप कुछ अपडेट किया है किया है और उन अपडेट रोलबैक करना चाहते हैं, और आप इस एक (नहीं अभी तक प्रतिबद्ध) लेन-देन के अंदर नहीं किया है, तो मुझे लगता है कि हालांकि भाग्य ...
(मैन्युअल की मरम्मत यह है , या, बैकअप बहाल)
begin transaction
// execute SQL code here
rollback transaction
आप पहले से ही क्वेरी निष्पादित और इसे वापस रोल करने चाहते हैं, तो दुर्भाग्य से अपने ही असली विकल्प एक डेटाबेस बैकअप बहाल करने के लिए है। यदि आप पूर्ण बैकअप का उपयोग कर रहे हैं, तो आप समय पर किसी विशिष्ट बिंदु पर डेटाबेस को पुनर्स्थापित करने में सक्षम होना चाहिए।
पूर्ण बैकअप द्वारा आपका क्या मतलब है, क्या मुझे दैनिक बैकअप डेटाबेस चाहिए, मैं इसके लिए नया हूं? – stom
एक बार अपडेट होने के बाद आप केवल एक ही अपडेट रोलबैक नहीं कर सकते हैं। आपकी सबसे अच्छी शर्त डेटाबेस के पिछले बैकअप पर वापस रोल करना है।
आपके द्वारा निर्दिष्ट जानकारी से, पुनर्प्राप्ति का आपका सबसे अच्छा मौका डेटाबेस बैकअप के माध्यम से होता है। मुझे नहीं लगता कि आप उस परिवर्तन में से किसी भी रोलबैक को रोलबैक करने में सक्षम होने जा रहे हैं क्योंकि आप स्पष्ट रूप से उस समय लेनदेन का उपयोग नहीं कर रहे थे।
आपको इस उपकरण की आवश्यकता है और आप लेनदेन पा सकते हैं और इसे उलट सकते हैं।
"ओउप्स - इच्छा है कि आप बिना किसी खंड के अपडेट स्टेटमेंट को रोलबैक कर सकें !? ApexSQL लॉग में SQL सर्वर डेटाबेस के लिए रोलबैक लेनदेन की क्षमता है।" महान रेखा! –
कि टोल बहुत अच्छा लगता है लेकिन इसकी कीमत 2000 डॉलर है –
जैसा कि पहले ही कहा गया है एक बैकअप से पुनर्स्थापित छोड़कर कुछ भी नहीं आप कुछ नहीं कर सकता है। कम से कम अब आप लेनदेन में वक्तव्य लपेटना सीखेंगे, यह देखने के लिए कि प्रतिबद्ध होने का निर्णय लेने से पहले क्या होता है। साथ ही, यदि आपके पास अपने डेटाबेस का बैकअप नहीं है तो यह आपको अपने डेटाबेस के नियमित बैकअप बनाने के लिए भी सिखाएगा।
हालांकि हम आपकी इमेडिएट समस्या के लिए बहुत मदद नहीं कर रहे हैं ... उम्मीद है कि ये उत्तर सुनिश्चित करेंगे कि आप भविष्य में इस समस्या में फिर से भाग न लें।
प्रयास करें
ROLLBACK WORK;
यह आमतौर पर काम करता है
करने के लिए सरल:
हैडर कोड ...
Set objMyConn = New ADODB.Connection
Set objMyCmd = New ADODB.Command Set
objMyRecordset = New ADODB.Recordset
On Error GoTo ERRORHAND
कार्य कोड ...
objMyConn.ConnectionString = ConnStr
objMyConn.Open
कोड ....
'प्रतिलिपि डेटा से एक्सेल'
objMyConn.BeginTrans <-- define transactions to possible be rolled back
For NewRows = 2 To Rows
objMyRecordset.AddNew
For NewColumns = 0 To Columns - 1
objMyRecordset.Fields(NewColumns).Value = ActiveSheet.Cells(NewRows, NewColumns + 1)
Next NewColumns objMyRecordset.Update Next NewRows
objMyConn.CommitTrans <- if success, commit them to DB
objMyConn.Close
ERRORHAND:
Success = False
objMyConn.RollbackTrans <-- here we roll back if error encountered somewhere
LogMessage = "ERROR writing database: " & Err.Description
...
आप इस
SET IMPLICIT_TRANSACTIONS ON
update Staff set staff_Name='jas' where staff_id=7
ROLLBACK
के लिए अंतर्निहित लेनदेन का उपयोग आप request-- के रूप में आप शुरू प्रक्रिया के रूप में संग्रहीत प्रक्रिया की स्थापना करके एक संग्रहीत प्रक्रिया से इस सेटिंग (SET IMPLICIT_TRANSACTIONS ON
) सेट कर सकते हैं कर सकते हैं।
लेकिन SET IMPLICIT TRANSACTION ON
आदेश कनेक्शन विशिष्ट है। इसलिए स्टार्ट अप संग्रहीत प्रक्रिया चलाने वाले किसी भी कनेक्शन के अलावा आपके द्वारा सेट की गई सेटिंग से लाभ नहीं होगा।
हम क्वेरी में डालने 2 लाइन चलाने के लिए और अगर उन सभी को सच इसे चलाने लेकिन यदि नहीं नहीं चल कुछ भी और ROLLBACK
DECLARE @rowcount int set @rowcount = 0 ;
BEGIN TRANSACTION [Tran1]
BEGIN TRY
insert into [database].[dbo].[tbl1] (fld1) values('1') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
insert into [database].[dbo].[tbl2] (fld1) values('2') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
IF @rowcount = 2
COMMIT TRANSACTION[Tran1]
ELSE
ROLLBACK TRANSACTION[Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION[Tran1]
END CATCH
क्या आप अद्यतन के साथ मतलब है? क्या आप इस सवाल पर थोड़ा और आगे आ सकते हैं? –
मैंने एक टेबल अपडेट किया है जो मेरी भयानक गलती थी ..in एक पंक्ति को अपडेट करने के बजाय .. मेरी लापरवाही के साथ सभी पंक्तियों को अपडेट किया गया है ... मैं इसे कैसे वापस रोल करूं .... कृपया मदद करें ..... – Guddu
आपको चाहिए ApexSQL लॉग। –