คำถามติดแท็ก sql-server

Microsoft SQL Server ทุกรุ่น (ไม่ใช่ MySQL) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น sql-server-2016 เนื่องจากมักเกี่ยวข้องกับคำถาม

1
ฉันจะตรวจสอบได้อย่างไรว่าการแปลง SSIS ไม่ใช่การปิดกั้นการบล็อกบางส่วนหรือการบล็อกทั้งหมด
มีหลายบล็อกที่อ้างว่าจัดประเภท SSIS เป็นการแปลง (แบบอะซิงโครนัส), การไม่บล็อก (ซิงโครนัส) และการบล็อกบางส่วน (อะซิงโครนัส) เมื่อตรวจสอบคำถามที่เฉพาะเจาะจง: มัลติคาสต์ซิงโครนัส (ไม่ปิดกั้น) หรืออะซิงโครนัส (ปิดกั้นบางส่วน) หรือไม่ แหล่งข้อมูลหนึ่งอ้างว่า async: "Multicast เป็นการแปลงแบบอะซิงโครนัส (หรือเรียกอีกอย่างว่าการบล็อกบางส่วน)" : http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx และอีกแบบย่อ: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/ แหล่งข้อมูลอื่นอ้างว่าการแปลง DQS Cleansing เป็นการแปลงที่ไม่มีการปิดกั้น แต่ดูเหมือนว่าฉันกำลังปิดกั้นบางส่วน กรุณาอย่าตอบด้วยลิงค์ไปยังรายการของการแปลงประเภทตามประเภท คำตอบสำหรับคำถามนี้หวังว่าจะช่วยให้วิธีการที่เข้มงวดยิ่งขึ้นเพื่อพิสูจน์คำตอบที่ถูกต้อง เนื่องจากการแปลงบล็อกและบล็อกบางส่วนจะย้ายข้อมูลไปยังบัฟเฟอร์ใหม่ซึ่งไม่ใช่การบล็อกซึ่งทำงานกับบัฟเฟอร์ในสถานที่ฉันสงสัยว่าโซลูชันจะเฝ้าดูการสร้างบัฟเฟอร์ระหว่างการดำเนินการแปลง แต่ฉันไม่แน่ใจ ( ) ถ้าสิ่งนี้จะสร้างคำตอบที่ชัดเจนและ (b) วิธีการทำเช่นนี้ ฉันเชื่อว่าการแปลงที่ไม่ปิดกั้นจะไม่ทำให้แผนผังการดำเนินการใหม่เริ่มต้นดังนั้นจึงเป็นไปได้ว่าคำตอบนั้นอยู่ในการบันทึก PipelineExectionTrees และ PipelineExecutionPlan สิ่งนี้อาจแยกความแตกต่างระหว่างแบบซิงโครนัสและแบบอะซิงโครนัส แต่อาจไม่แยกความแตกต่างระหว่างการบล็อกบางส่วนและการบล็อกอย่างสมบูรณ์

2
เซสชันหยุดทำงานด้วย TM REQUEST และจัดการกับแผน 0x0000
เรามีเหตุการณ์เป็นระยะซึ่งมีการเชื่อมต่อจำนวนมากค้างอยู่บนคำขอ TM (จากsys.dm_os_waiting_tasks) และไม่มีความคืบหน้า KILLที่ได้รับผลกระทบsession_idไม่ทำอะไรเลย เซิร์ฟเวอร์รันการมิเรอร์ฐานข้อมูล (2008R2) การหยุดชั่วคราวและการทำมิเรอร์ต่อไปจะช่วยแก้ไขปัญหาเมื่อเกิดขึ้น เซสชันที่ติดอยู่ในสถานะนี้ไม่สามารถฆ่าได้ โหลดบนกระจกเป็นปกติไม่แตก เมื่อการเชื่อมต่อจำนวนมากติดอยู่ในสถานะนี้ระบบจะหยุดทำงานและมิเรอร์หยุดการเรพลิเคต (เคียวรีทั้งหมดถูกบล็อก) ใครเคยเห็นสิ่งนี้มาก่อนและรู้ว่าอะไรทำให้เกิดอะไรขึ้น ไม่มีสิ่งใดในบันทึกข้อผิดพลาด
12 sql-server 

1
ความแตกต่างระหว่าง FreeProcCache และ FreeSystemCache
ขณะนี้ฉันรันDBCC FREEPROCCACHEเมื่อฉันต้องการลบข้อมูลออกจากบัฟเฟอร์พูลระหว่างการรันเคียวรี SQL แต่ผมได้รับการตรวจสอบนี้ Technet DBCC FREESYSTEMCACHEอ้างอิงบทความ แคชอะไรที่ไม่FREESYSTEMCACHEเช็ดFREEPROCCACHE?
12 sql-server  cache 

1
SQL Server 2012 Standard Server ที่มี 50 อินสแตนซ์จะไม่ถอนการติดตั้งอินสแตนซ์
ฉันสงสัยว่านี่เป็นปัญหาเพราะเราพบขีด จำกัด สูงสุด 50 อินสแตนซ์ของ SQL Server ที่ขีด จำกัด มันจะไม่ติดตั้งอินสแตนซ์เพิ่มเติมตามธรรมชาติ อย่างไรก็ตามดูเหมือนว่าจะไม่ติดตั้งให้เหมือนกัน แย่กว่านั้น แฮงค์ที่กล่องโต้ตอบ "เลือกคุณสมบัติ" เมื่อคุณกดปุ่มถัดไปหลังจากเลือก SQL Engine สำหรับอินสแตนซ์ ฉันไม่พบข้อมูลมากมายเกี่ยวกับสิ่งนี้ สิ่งที่น่าสนใจที่สุดคือ: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/24a1e5f3-25f3-48c8-973a-4c6a18578e42/trying-to-uninstall-1-of-50-sql -Server-2008-R2-ด่วนแฮงค์-on-โปรดรอ นอกจากนี้ยังแนะนำให้ใช้setup.exeกับพารามิเตอร์บางตัวเพื่อถอนการติดตั้งอินสแตนซ์ แต่ฉันไม่สามารถทำได้โดยไม่ต้องเริ่ม GUI และเข้าสู่การถอนการติดตั้งปกติซึ่งล้มเหลว ระดับความสูงไม่ทำอะไรเลย รีบูตไม่ได้ช่วย บันทึกบอกว่า "ถูกยกเลิกโดยผู้ใช้" เท่านั้นเพราะฉันต้องฆ่ามันในที่สุด ไม่มีอะไรชัดเจนก่อนที่จะถึงจุดนั้น การตรวจสอบเป็นสีเขียวทั้งหมด การตั้งค่าบอกว่าเป็น SQL Server 2012 SP1 - อินสแตนซ์ทั้งหมดอยู่ที่ 11.0.2100 ฉันเลือกที่จะตอบ / ปิดคำถามของฉันเองเนื่องจาก Microsoft ได้ปิดตั๋วด้วยสถานะ "ไม่แก้ไข" หวังว่าพวกเขาจะแก้ไขสิ่งนี้สำหรับ SQL Server …

1
หากการทำธุรกรรม "มุ่งมั่น" จะถูกบันทึกไว้อย่างแน่นอนหรือไม่?
หากการทำธุรกรรมที่จะมุ่งมั่นที่จะประสบความสำเร็จผมสามารถแล้วเป็น 100% แน่ใจว่าจะได้รับการเขียนไปยังฐานข้อมูลและไฟล์บันทึก? ฉันมั่นใจได้อย่างไรว่าข้อมูลถูกบันทึกไว้? วันนี้ล็อกไฟล์ของเราถึงขีด จำกัด ของไดรฟ์และเราได้รับข้อผิดพลาดมากมาย นอกจากนี้บริการอื่น ๆ บางอย่างล้มเหลว เราเพิ่มดิสก์และรีสตาร์ทเซิร์ฟเวอร์ ในระหว่างการเริ่มต้นเซิร์ฟเวอร์ทำการ "กู้คืนฐานข้อมูล" - ฉันจะแน่ใจได้หรือไม่ว่าทุกอย่างโอเคอีกครั้ง?


2
มีเครื่องมือของบุคคลที่สามที่สามารถอ่านและ / หรือวิเคราะห์ไฟล์ SQL Profiler trace (.trc) [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมีไฟล์. trc จากการติดตามที่ DBA ทำกับหนึ่งในฐานข้อมูลของฉัน ฉันไม่มีเครื่องมือตัวสร้างโปรไฟล์ SQL ติดตั้งอยู่บนพีซีดังนั้นฉันจึงไม่สามารถดูเนื้อหาและวิเคราะห์บันทึกการติดตามได้ ฉันจะอ่านไฟล์นี้โดยไม่ติดตั้งตัวสร้างโปรไฟล์ SQL บนพีซีของฉันได้อย่างไร
12 sql-server  trace 

2
MERGE ใช้ tempdb หรือไม่
พิจารณาคำถามต่อไปนี้: MERGE [Parameter] with (rowlock) AS target USING (SELECT @AreaId, @ParameterTypeId, @Value) AS source (AreaId, ParameterTypeId, Value) ON (target.AreaId = source.AreaId AND target.ParameterTypeId = source.ParameterTypeId) WHEN MATCHED THEN UPDATE SET target.Value = source.Value, @UpdatedId = target.Id WHEN NOT MATCHED THEN INSERT ([AreaId], [ParameterTypeId], [Value]) VALUES (source.AreaId, source.ParameterTypeId, source.Value); สถิติ I …
12 sql-server  t-sql 

1
วิธีการแก้ไขปัญหาข้อขัดแย้งเท็จการจำลองแบบผสานอย่างถูกต้อง
เรามีการตั้งค่าการจำลองแบบผสาน SQL Server 2008 R2 เมื่อเร็ว ๆ นี้ฉันเริ่มได้รับความขัดแย้งสำหรับบางตารางและเมื่อฉันตรวจสอบตัวแสดงข้อขัดแย้งฉันจะเห็นว่าค่าของผู้ชนะ & ค่าคอลัมน์ผู้แพ้เหมือนกัน! ฉันแน่ใจว่าข้อมูลเหล่านี้ถูกป้อนโดยผู้สมัครสมาชิกเพียงคนเดียว ฉันใช้sp_showrowreplicainfoเพื่อรับรายละเอียดเพิ่มเติมเกี่ยวกับแถวที่ขัดแย้งกันและฉันได้ 2 แถว: แถวหนึ่งสำหรับผู้เผยแพร่และแถวสำหรับสมาชิกที่มีทั้งสองแถวมี "เวอร์ชัน" เป็น 1 ฉันใช้วิธีของแบรนดอนด้วย: การตรวจสอบการเปลี่ยนแปลงในการจำลองแบบผสานแต่มันแสดงให้เห็นว่ามีการแทรกแบบปกติเท่านั้น! คุณช่วยบอกวิธีเริ่มต้นการแก้ไขข้อขัดแย้งประเภทนี้ได้ไหม

3
การอัปเดตตารางที่มีการบันทึกนับล้านรายการมันใช้เวลา 4 วัน
ขณะนี้ฉันกำลังอัปเดตตารางที่มีเรคคอร์ดนับล้านระเบียนอยู่ในช่วง 4 วันและคิวรียังดำเนินการอยู่ ฉันตรวจสอบกิจกรรมการตรวจสอบแสดงว่าแบบสอบถามกำลังทำงานอยู่ ในบันทึกเหตุการณ์ไม่มีข้อผิดพลาดเลย ประสิทธิภาพที่ชาญฉลาด: Tempdb ในดิสก์ A (พื้นที่ว่าง 850 gb) ไฟล์ฐานข้อมูลในดิสก์ B (พื้นที่ว่าง 750 gb) RAM 16 GB กรุณาแนะนำฉันฉันควรทำอย่างไร? แบบสอบถาม UPDATE dbo.table1 SET costPercentage = ISNULL(t2.PaymentIndex, 1.0), t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00), Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00) FROM dbo.table2 t2 WHERE LEFT(dbo.test1.procodet, …

2
ฉันควรคาดหวังปริมาณงานใดกับ MPIO
Dell PowerEdge 2950 พร้อมสอง 1 Gbps NIC จะไปที่พอร์ต 1 Gbps สองพอร์ตบนสวิตช์ซึ่งจะไปยัง NetApp ด้วย NIC สี่ 1 Gbps ที่มีอยู่เป็นหนึ่งอินเทอร์เฟซเสมือน 24 ไดรฟ์, 7200k SATA, NetApp RAID-DP ฉันได้แมป NIC โฮสต์แต่ละรายการกับ NetApp โดยใช้ MPIO ใน Microsoft iSCSI initiator การทดสอบกับ SQLIO ผลงานการเขียนของฉันนั้นสมเหตุสมผลประมาณ 200 MBs แต่การอ่านของฉันใกล้ถึง 100 MB การอ่านของฉันไม่ควรอยู่ใกล้กับ 200 MB เหมือนกับการเขียนของฉันหรือไม่ นี่เป็นปัญหาการกำหนดค่าหรือมีปัญหาการเก็บข้อมูลพื้นฐานที่ฉันไม่เข้าใจหรือไม่? อัปเดต: นี่คือ IOPS …
12 sql-server 

1
การสำรองข้อมูลธุรกรรม SQL Server เทียบกับบันทึก
ฉันได้รับฐานข้อมูล SQL Server 2008 ที่มีความสำคัญทางธุรกิจในระดับปานกลางและกำลังพยายามวางแผนการสำรองข้อมูล (ฉันเป็นนักพัฒนาไม่ใช่ DBA) วิธีการตั้งค่าระบบของเราในขณะนี้มีระบบสำรองข้อมูลสองระบบ: การสำรองข้อมูลเต็มรูปแบบรายสัปดาห์ ( .bak) และการทำธุรกรรมบันทึกรายชั่วโมง ( .trn) การสำรองข้อมูล เราเก็บสำรองข้อมูลเหล่านี้หลายชุดและจัดส่งนอกสถานที่เป็นประจำ บันทึก SQL Server ( .ldf) Fullที่มีรูปแบบการกู้คืนการตั้งค่า ไฟล์นี้อยู่ในไดรฟ์แยกต่างหากจาก.mdfไฟล์หลักแต่ไม่ได้สำรองไว้ ในกรณีที่มีการกู้คืนฉุกเฉิน (หรือเมื่อกู้คืนการสำรองข้อมูลไปยังเครื่อง dev) ขั้นตอนของฉันคือการใช้.bakไฟล์แล้วใช้ไฟล์. trn เรามีสคริปต์ที่ทำให้ขั้นตอนนี้ค่อนข้างตรงไปตรงมา คำถามของฉัน: เป็นไปได้หรือไม่ที่จะกู้คืนฐานข้อมูลจาก.ldfไฟล์? มันคืออะไรสำหรับ มันซ้ำซ้อนโดยไม่จำเป็นหรือไม่ที่จะต้องมีบันทึกธุรกรรมทั้งสองนี้? การสำรอง.ldfไฟล์เป็นสิ่งสำคัญหรือไม่

5
ฉันจะลบแผนการดำเนินการที่ไม่ดีออกจากฐานข้อมูล Azure SQL ได้อย่างไร
DBCC FREEPROCCACHEไม่ทำงานใน Azure SQL DB ฉันจะบังคับให้มีแผนอื่นเพื่อปลดปล่อยตัวเองออกจากแคชในลักษณะที่จะไม่ทำให้ระบบการผลิตเสียหาย (เช่นฉันไม่สามารถไปเปลี่ยนตารางที่จำใจได้) นี่เป็นเฉพาะสำหรับ SQL ที่สร้างโดย Entity Framework ดังนั้นจึงไม่ใช่ procs ที่จัดเก็บด้วยตนเองซึ่งมันคือไดนามิก SQL ที่มีประสิทธิภาพ (แหล่งที่มาคือดัชนีที่ไม่ดี -> สถิติที่ไม่ดี ฯลฯ นั่นคือทั้งหมดที่ได้รับการแก้ไข แต่แผนไม่ดีจะไม่หายไป) อัปเดต: ฉันเลือกโซลูชันของ @ mrdenny เมื่อเขาไปถึงที่นั่นก่อน อย่างไรก็ตามฉันใช้สคริปต์ของ @Aaron Bertrand สำเร็จในการทำงาน ขอบคุณทุกคนสำหรับความช่วยเหลือ !!

3
การต่อข้อมูลทางกายภาพ: รับประกันการดำเนินการตามคำสั่งหรือไม่?
ใน SQL มาตรฐานผลลัพธ์ของ a union allไม่ได้รับประกันว่าจะอยู่ในลำดับใด ๆ ดังนั้นสิ่งที่ชอบ: select 'A' as c union all select 'B' สามารถส่งคืนสองแถวในลำดับใดก็ได้ (แม้ว่าในทางปฏิบัติในฐานข้อมูลใด ๆ ที่ฉันรู้ว่า 'A' จะมาก่อน 'B') ใน SQL Server สิ่งนี้จะเปลี่ยนเป็นแผนการดำเนินการโดยใช้การดำเนินการทางกายภาพ "การต่อข้อมูล" ฉันนึกภาพออกได้ง่ายว่าการดำเนินการเรียงต่อกันจะสแกนอินพุตของมันคืนสิ่งที่อินพุตมีบันทึกไว้ อย่างไรก็ตามฉันพบข้อความต่อไปนี้บนเว็บ ( ที่นี่ ): ตัวประมวลผลข้อความค้นหาจะดำเนินการตามแผนนี้ตามลำดับที่ผู้ให้บริการปรากฏในแผนข้อแรกคืออันดับแรกและรายการสุดท้ายคือรายการสุดท้าย คำถาม: จริงหรือไม่ในทางปฏิบัติ สิ่งนี้รับประกันได้ว่าเป็นจริงหรือไม่? ฉันไม่พบการอ้างอิงใด ๆ ในเอกสารประกอบของ Microsoft ที่อินพุตถูกสแกนตามลำดับตั้งแต่ครั้งแรกถึงครั้งสุดท้าย ในทางกลับกันเมื่อใดก็ตามที่ฉันพยายามเรียกใช้ผลลัพธ์แนะนำว่าอินพุตนั้นถูกประมวลผลตามลำดับ มีวิธีที่จะทำให้กระบวนการของเครื่องยนต์มากกว่าหนึ่งอินพุตในแต่ละครั้งหรือไม่? การทดสอบของฉัน (โดยใช้นิพจน์ที่ซับซ้อนกว่าค่าคงที่) อยู่ในเครื่อง 8-core ที่เปิดใช้งานแบบขนานและการสืบค้นส่วนใหญ่จะใช้ประโยชน์จากความขนาน

2
การออกแบบฐานข้อมูล SQL Server สำหรับข้อมูล“ เก็บถาวร แต่พร้อมใช้งาน”
เรามีฐานข้อมูลขนาดใหญ่นี้ (> 1TB) ที่เราตั้งใจจะ "ลดขนาด" ฐานข้อมูลหมุนรอบเอนทิตีหลักหนึ่งเรียกว่า "เยี่ยมชม" สำหรับการอภิปรายสมมติว่ามันเป็นฐานข้อมูลสำหรับการปฏิบัติทางการแพทย์ มี "ประเภท" การเข้าชม 30 ครั้งเช่นขั้นตอนรายปีการติดตามการฉีดวัคซีนและอื่น ๆ แต่ละรายการเป็นตารางเงินอุดหนุนสำหรับ "การเยี่ยมชม" เช่น "visit_immuno" ฐานข้อมูลได้สะสมข้อมูล 12 ปีมาตั้งแต่ปี 2000 มีคนเสนอว่าเราเก็บข้อมูลประมาณ 3 ปีในรุ่น "สด" และให้เวลาที่เหลืออยู่ในฐานข้อมูล "old_data" วันที่จะถูกเก็บไว้เฉพาะในตาราง "เยี่ยมชม" เนื่องจากมันถูกทำให้เป็นมาตรฐาน ตารางเยี่ยมชมยังมีROWVERSIONคอลัมน์และคอลัมน์BIGINTหลอก (คลัสเตอร์) สำหรับ intents และวัตถุประสงค์สมมติว่ากุญแจสำคัญในการจัดกลุ่มเป็นประชากรโดยลำดับ (SQL Server 2012 องค์กร) - cidเราจะตั้งชื่อมันว่า คำสั่งvisit.dateนี้ไม่ได้อยู่ในลำดับเดียวกับคีย์การจัดกลุ่มตัวอย่างเช่นเมื่อแพทย์ไปตรวจเยี่ยมเพิ่มเติมและกลับมาพร้อมกับข้อมูล "กระเป๋าเอกสาร" ของเขามันจะถูกรวมเข้าไว้ในตารางหลัก นอกจากนี้ยังมีการปรับปรุงบางอย่างเพื่อ "ไปที่" ตารางที่จะทำให้ROWVERSIONคอลัมน์ที่จะออกจากซิงค์กับทั้งสองcidและdateคอลัมน์ - จะนำมันก็ไม่ROWVERSIONหรือcidจะทำให้คีย์พาร์ทิชันที่เหมาะสมด้วยเหตุผลนี้ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.