คำถามติดแท็ก transaction

กลไกสำหรับการกระทำชุดการเปลี่ยนแปลงที่สอดคล้องกันลงในฐานข้อมูลแบบอะตอม

2
การทำธุรกรรมและลองจับในงาน SQL Server
เรามีการดำเนินงาน DML ในแต่ละขั้นตอนของงาน SQL Server เพื่อให้แน่ใจว่าการปรับปรุง / แทรกจะถูกรีดกลับในกรณีอะไรผิดพลาดผมได้ห่อการปรับเปลี่ยนข้อมูลของแต่ละขั้นตอนในTRY CATCHและTRANSACTIONบล็อก: BEGIN TRY BEGIN TRANSACTION [[INSERT/update statements]] ... IF @@TRANCOUNT > 0 BEGIN COMMIT TRANSACTION PRINT 'Successful.' END END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage IF …

2
หมดเวลาธุรกรรม SQL Server
มีวิธีใดใน SQL Server 2008 R2 ที่จะทำให้เกิดการหมดเวลาสำหรับการปรับเปลี่ยนฐานข้อมูลที่เกี่ยวข้องกับการทำธุรกรรมหรือไม่? เรามีสถานการณ์ที่รหัสแอปพลิเคชันของเราแฮงค์หรือส่งข้อยกเว้นและไม่สามารถย้อนกลับหรือคอมมิท นี่เป็นสาเหตุให้เซสชันอื่นหยุดทำงานเพื่อรอธุรกรรมให้เสร็จสมบูรณ์

3
SQL Server - ระดับการแยกใดสำหรับคำสั่ง select ที่ไม่ได้บล็อก?
ฉันมีธุรกรรมที่ใช้เวลานาน (เรียกว่า, T1) ที่ดำเนินการลบปรับปรุงและแทรกบางอย่างในตารางใน SQL Server 2008 R2 ในเวลาเดียวกันกระบวนการอื่นเรียกใช้คำสั่งที่เลือกจากตารางนี้เป็นระยะ ภายใต้การตั้งค่าการแยกเริ่มต้น (READ COMMITTED ฉันคิดว่า?) T1 จะบล็อกคำสั่งที่เลือกไม่ให้ทำงานจนกว่าธุรกรรมจะทำหน้าที่หรือย้อนกลับ สิ่งที่ฉันต้องการเห็นคือคำสั่ง select เพื่อทำงานกับข้อมูลที่สอดคล้องกันแม้ในขณะที่ธุรกรรมกำลังดำเนินการอยู่ ฉันเชื่อว่าการแยก SNAPSHOT สามารถช่วยได้ แต่ไม่แน่ใจว่าฉันไปในทิศทางที่ถูกต้องหรือไม่ นี่จะเป็นระดับการแยกที่ดีที่สุดสำหรับแอปพลิเคชันนี้หรือไม่ ประการที่สองฉันไม่มีการควบคุมกระบวนการที่เรียกใช้คำสั่ง select แต่ฉันมีการควบคุมแอปพลิเคชัน. NET ที่เรียก T1 การเปลี่ยนแปลงระดับการแยกใด ๆ จะต้องการทั้งข้อความสั่งการเลือกและ T1 หรือว่าจะเพียงพอที่จะทำเครื่องหมายว่า T1 มีระดับการแยกต่างกันหรือไม่

2
COMMIT ทำงานภายในฟังก์ชัน plgpsql แบบไม่ระบุชื่อใน PostgreSQL 9.5 หรือไม่
$do$ฉันกำลังนำเข้าเป็นจำนวนมากของไฟล์ขนาดใหญ่เป็นจำนวนของตารางการแบ่งพาร์ติชันโดยใช้ลูปภายในการป้องกันรหัส plpgsql ที่ไม่ระบุชื่อ $do$ BEGIN FOR yyyy in 2012..2016 THEN EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$; END LOOP; END; $do$ LANGUAGE plpgsql กระบวนการทั้งหมดนี้ควรใช้เวลาประมาณ 15 ชั่วโมงและฉันหวังว่าการนำเข้าทั้งหมดจะไม่ถูกย้อนกลับหากมีข้อผิดพลาดในการนำเข้าในบางจุด IIRC COMMITไม่ทำงานภายในฟังก์ชั่นที่จัดเก็บ bc ฟังก์ชั่นทั้งหมดจะถือว่าเป็นธุรกรรมเดียว จากเอกสารสำหรับ$do$ บล็อกโค้ดจะได้รับการปฏิบัติเสมือนเป็นส่วนหนึ่งของฟังก์ชันที่ไม่มีพารามิเตอร์ส่งคืนโมฆะ มันถูกแยกวิเคราะห์และดำเนินการในครั้งเดียว ฉันสมมติว่านี่หมายความว่าทั้งหมด$do$เป็นธุรกรรมเดียวดังนั้นการกระทำภายในบล็อกจะไม่ทำงาน ฉันถูกไหม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.