คำถามติดแท็ก ado.net

6
ทำให้ SqlClient เป็นค่าเริ่มต้นเป็น ARITHABORT ON
สิ่งแรกแรก: ผมใช้ MS SQL Server 2008 ด้วยฐานข้อมูลที่ระดับความเข้ากันได้ 80 System.Data.SqlClient.SqlConnectionและการเชื่อมต่อกับสุทธิของ สำหรับเหตุผลด้านประสิทธิภาพฉันได้สร้างมุมมองที่จัดทำดัชนีแล้ว ARITHABORT ONเป็นผลให้การปรับปรุงตารางการอ้างอิงในมุมมองความจำเป็นที่จะต้องทำด้วย อย่างไรก็ตามผู้สร้างโปรไฟล์แสดงว่า SqlClient เชื่อมต่ออยู่ARITHABORT OFFดังนั้นการอัพเดทตารางเหล่านั้นจึงล้มเหลว มีการตั้งค่ากลางเพื่อให้ SqlClient ใช้งานARITHABORT ONหรือไม่ สิ่งที่ดีที่สุดที่ฉันสามารถค้นหาได้คือการดำเนินการด้วยตนเองทุกครั้งที่มีการเปิดการเชื่อมต่อ แต่การอัปเดตฐานรหัสที่มีอยู่เพื่อทำสิ่งนี้จะเป็นงานที่ค่อนข้างใหญ่ดังนั้นฉันจึงกระตือรือร้นที่จะหาวิธีที่ดีกว่า

3
ระดับการแยก "Chaos" คืออะไรและควรใช้เมื่อใด
เอกสาร ADO.NET แสดงความเป็นไปได้ของการตั้งค่าระดับธุรกรรมสำหรับธุรกรรม SQL เป็น Chaos ฟังดูไม่เป็นที่พอใจ แต่ถ้ามีอยู่ในนั้นน่าจะมีการใช้งานที่ถูกกฎหมาย SET แยกธุรกรรมระดับคำสั่งใน BOL (ah! เห็นฉันสามารถใช้ google และ BOL) ไม่มีอะไรน่าจะมีชื่อว่า "ความวุ่นวาย" และ ADO.NET จะมี 5 โหมดที่ตรงกับขึ้นอย่างให้อยู่ในระดับการบันทึกไว้ในนอกจาก "ความวุ่นวาย" ระดับความโกลาหลนี้เป็นอย่างไรหรือใคร (และทำไมถึงมีชื่อที่ไม่เป็นมิตร) อ้างอิง: ADO.NET enum

3
ทำไม `SELECT @@ IDENTITY 'ถึงส่งกลับทศนิยม
ฉันใช้Dapperเพื่อดำเนินการค้นหาต่อไปนี้กับอินสแตนซ์ SQL Server 2008 R2 Express จากแอปพลิเคชัน ASP.NET MVC 3 (.NET 4.0) INSERT INTO Customers ( Type, Name, Address, ContactName, ContactNumber, ContactEmail, Supplier) VALUES ( @Type, @Name, @Address, @ContactName, @ContactNumber, @ContactEmail, @Supplier) SELECT @@IDENTITY การเรียกร้องให้connection.Query<int>(sql, ...)ส่งการยกเว้น Cast ไม่ถูกต้อง ผมเคยบั๊กมันและมันก็เป็นจุดที่ Dapper เรียกบนกลับGetValueSqlDataReader ชนิดส่งคืนของGetValueคือObjectการตรวจสอบในรายการดีบักเกอร์ซึ่งเป็นทศนิยมแบบกล่อง ถ้าฉันเปลี่ยนการเลือกSELECT CAST(@@IDENTITY as int)เป็นการคืนค่าของ GetValue จะเป็น int แบบกล่องและข้อยกเว้นจะไม่ถูกส่งออกไป …

2
ปัญหาในการถอดรหัสการหยุดชะงักในบันทึกสถานะของ Innodb
เรากำลังเข้าถึง MySQL จากตัวเชื่อมต่อ Microsoft ADO.NET บางครั้งเราเห็นการหยุดชะงักต่อไปนี้ในสถานะ Innodb ของเราและไม่สามารถระบุสาเหตุของปัญหาได้ ดูเหมือนว่าธุรกรรม (2) กำลังรอและถือล็อกเดียวกันอยู่หรือไม่ ------------------------ LATEST DETECTED DEADLOCK ------------------------ 110606 5:35:09 *** (1) TRANSACTION: TRANSACTION 0 45321452, ACTIVE 0 sec, OS thread id 3804 starting index read mysql tables in use 1, locked 1 LOCK WAIT 2 lock struct(s), heap size 368, 1 …

1
เราจำเป็นต้องจัดการธุรกรรมในรหัส C # หรือในขั้นตอนการจัดเก็บ
เราจำเป็นต้องมีการจัดการธุรกรรมใน c # หรือไม่รวมถึงการจัดเก็บฐานข้อมูลทั้งสองด้าน ค#: Using(transaction with transaction scope) { Execute stored proc; Transaction. Complete; } โพรซีเดอร์ที่เก็บ SQL: Create process As Begin try Begin transaction Commit End try Begin catch Rollback End catch

2
แบบสอบถามทั้งสองนี้จะส่งผลให้เกิดการหยุดชะงักหากดำเนินการตามลำดับหรือไม่
นี่เป็นสาเหตุของคำถามอื่น ๆ ของฉันแต่ฉันคิดว่ามันคุ้มค่าที่จะแยกทั้งสองออกจากกันเนื่องจากฉันมีสมมติฐานตามบันทึกต่อไปนี้ที่ฉันชอบที่จะปลอมแปลงหรือตรวจสอบ สมมติฐานของฉันคือว่าการหยุดชะงักอื่น ๆเป็นผลมาจากการสอบถามต่อไปนี้โดยมีการซ่อนแบบสอบถามดั้งเดิมที่อยู่บนพื้นฐานของความเข้าใจของฉันสถานะ Innodb แสดงเฉพาะธุรกรรมล่าสุด (ถูกต้องหรือไม่) จากบันทึกฉันได้ตรวจสอบรหัสของเราและพบว่ามีการค้นหาสองรายการต่อไปนี้ตามลำดับ: db.Execute("UPDATE people SET iphone_device_id=NULL WHERE iphone_device_id=@0 AND people_id<>@1", DeviceID, m_User.people_id); // I have hard coded this query in this snippet to simplify things db.Execute("UPDATE people SET company_id = 444, name = 'Dad', password = '<pass>', temp_password = NULL, reset_password_hash = NULL, …

1
สิ่งที่เป็นประโยชน์ของการตั้งค่า ARITHABORT ON สำหรับการเชื่อมต่อทั้งหมดใน SQL Server?
ดังนั้นผมจึงได้พิจารณาแล้วว่าพฤติกรรมผิดปกติของ SQL Server ของฉันคือเนื่องจากการตั้งค่าเริ่มต้นของผู้ให้บริการสุทธิ SqlClient SET ARITHABORT OFFข้อมูลของ ด้วยที่กล่าวว่าฉันได้อ่านบทความต่าง ๆ ที่ถกเถียงวิธีที่ดีที่สุดในการใช้งาน สำหรับฉันฉันแค่ต้องการวิธีที่ง่ายเพราะ SQL Server กำลังทนทุกข์และการปรับแต่งการสืบค้นของฉันยังไม่ได้มีการข้ามผ่านแอพอย่างสมบูรณ์ (และแน่นอนว่าการเพิ่มSETใน sp ไม่ทำงาน) ในบทความยอดเยี่ยมเกี่ยวกับหัวข้อของ Erland Sommarskog เขาแนะนำให้ใช้วิธีการที่ปลอดภัยโดยการเปลี่ยนแอพให้เป็นปัญหาSET ARITHABORT ONสำหรับการเชื่อมต่อ อย่างไรก็ตามในคำตอบนี้จากคำถาม dba.stackexchange โซโลมอน Rutzky เสนอวิธีการแบบกว้างและแบบฐานข้อมูล ฉันหายไปที่นี่โดยการตั้งค่าทั้งอินสแตนซ์นี้ได้อย่างไร ตามที่ฉันเห็น ... เนื่องจาก SSMS มีการตั้งค่านี้ONตามค่าเริ่มต้นฉันไม่เห็นอันตรายใด ๆ ในการตั้งค่าทั้งONเซิร์ฟเวอร์สำหรับการเชื่อมต่อทั้งหมด ในตอนท้ายของวันฉันแค่ต้องการ SQL Server นี้เพื่อดำเนินการเหนือสิ่งอื่นใด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.