कैसे जब स्ट्रिंग डेटा छोटा है TSQL में कोई लेनदेन रोलबैक के लिए?

वोट
32

मैं रोलबैक सकता है - वर्तमान में मैं एक बड़े आयात प्रक्रिया है कि मैं एक सौदे के अंदर रैप करने के लिए, इसलिए यदि कुछ भी टूट जाता है कोशिश कर रहा हूँ है। मुद्दा मेरे पास है कि जब ट्रांस अंदर TSQL ऊपर चल रही है, यह जब निम्न SQL त्रुटि तब होती है वापस नहीं किया जाएगा

Msg 8152, Level 16, State 14, Line 249
String or binary data would be truncated.
The statement has been terminated.

नीचे इस आयात TSQL लपेटता

DECLARE @error INT
SELECT @error = 0
BEGIN TRANSACTION

--** begin import TSQL

--** end import TSQL

SELECT @error = @@error 
IF @error != 0 GOTO handle_error

COMMIT

handle_error: 
IF @error != 0 
BEGIN 
ROLLBACK 
END
12/03/2009 को 16:43
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
79

यदि आपका एसक्यूएल 2005 को तुम कोशिश कर सकते हैं:

BEGIN TRANSACTION
BEGIN TRY
    --Run your Statements
    COMMIT TRANSACTION
END TRY
BEGIN CATCH
        ROLLBACK TRANSACTION
        DECLARE @Msg NVARCHAR(MAX)  
        SELECT @Msg=ERROR_MESSAGE() 
        RAISERROR('Error Occured: %s', 20, 101,@msg) WITH LOG
END CATCH
12/03/2009 को 16:53
का स्रोत उपयोगकर्ता

वोट
20

कैसे चालू करने के बारे XACT_ABORT

set xact_abort on
12/03/2009 को 16:45
का स्रोत उपयोगकर्ता

वोट
0

मैं यह भी कहना है कि अगर आपको यह त्रुटि अक्सर प्राप्त कर रहे हैं, तो आप में स्तंभ आप डेटा प्रवेश कर रहे हैं के आकार को संशोधित या इसे prod तालिका में डालने से पहले डेटा तैयार करने के लिए अपने सफाई की प्रक्रिया को समायोजित करने की जरूरत है। लघु उद्योगों में, तुम भी डेटा deosn't कि पूरा मानक आकार एक बुरा डेटा तालिका पर जाएं और बाकी की प्रक्रिया हो सकता था।

12/03/2009 को 20:24
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more