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

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

1
ความถี่ของการแฮช / การเรียงลำดับที่หกลงใน tempdb เกี่ยวข้องกับอะไร
แอปพลิเคชั่นองค์กรของเราใช้ SQL Server สำหรับจัดเก็บข้อมูลและเป็นระบบ OLTP เป็นหลัก อย่างไรก็ตามส่วนประกอบที่สำคัญของแอปพลิเคชันของเราสร้างภาระงาน OLAP ที่มีนัยสำคัญ เวลาในการเขียนของเราไปที่ tempdb ประมาณ 100ms แนวโน้มนี้ถือเป็นช่วงเวลาและALLOW_SNAPSHOT_ISOLATIONมีการเปิดปิด เรากำลังแก้ไขปัญหานี้เกี่ยวกับปัญหาและสิ่งที่น่าสนใจเพียงอย่างเดียวที่เราพบคือมีแฮชและการเรียงลำดับการรั่วไหลจำนวนมากไปยัง tempdb เราคาดการณ์ว่าสิ่งนี้มาจากภาระงาน OLAP ของเรา คำถาม ความถี่ของการรั่วไหลเกี่ยวข้องกับอะไร? ใด? กี่ครั้ง / วินาที? ข้อมูลเบื้องต้นของเราระบุว่าเรามีแฮชการรั่วไหลประมาณ 2 ครั้งต่อวินาทีและ 25 การเรียงลำดับหกครั้งต่อนาที เป็นไปได้หรือไม่ที่ความถี่ของการรั่วไหลนี้อาจเป็นผู้ร้ายหลักในเวลาแฝงการเขียนระดับสูงของเรา ข้อมูลอื่น ๆ เรากำลังใช้หลายไฟล์สำหรับ tempdb ตามที่แนะนำต่อจำนวนคอร์ ไฟล์ tempdb อยู่ใน RAID 1 + 0 SAN (ที่มี SSD ประสิทธิภาพสูง) แต่เป็นอุปกรณ์เดียวกับข้อมูล DB หลักและไฟล์บันทึก …

1
เป็นวิธีที่ถูกต้องเพื่อให้แน่ใจว่ารายการที่ไม่ซ้ำกันในการออกแบบฐานข้อมูลชั่วคราวคืออะไร?
ฉันมีปัญหากับการออกแบบฐานข้อมูลชั่วคราว ฉันจำเป็นต้องรู้วิธีการตรวจสอบให้แน่ใจว่าฉันมีบันทึกการใช้งานเพียงหนึ่งเดียวสำหรับระยะเวลาที่กำหนดสำหรับร้านค้า ฉันได้อ่านคำตอบนี้แล้ว แต่ฉันเกรงว่าฉันไม่สามารถคาดหัวได้ว่าไกทำงานอย่างไร โดยเฉพาะอย่างยิ่งฉันจะทำงานที่กระตุ้นให้มีอยู่ของฉันที่ป้องกันการปรับปรุงเพื่อบันทึกและแทรกบันทึกใหม่แทน ปัญหาที่แท้จริงของฉันคือฉันไม่รู้วิธีป้องกัน Store จากวันที่มีผลมากกว่าหนึ่งวันเมื่อวันที่เสร็จสิ้นเป็นโมฆะ (เช่นป้องกันการบันทึก 2 รายการสำหรับร้านค้า) นี่คือสิ่งที่ฉันมี แต่มันช่วยให้ฉันสามารถแทรกบันทึกใหม่สำหรับร้านค้าที่มีวันที่มีประสิทธิภาพที่แตกต่างกัน นิยามของตาราง: /****** Object: Table [PCR].[Z_STORE_TEAM] Script Date: 05/09/2014 13:05:57 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Z_STORE_TEAM]') AND type in (N'U')) DROP TABLE [Z_STORE_TEAM] GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id …

1
การออกแบบฐานข้อมูลสำหรับการจัดการ 1 พันล้านแถวและการนับ
เราได้รับข้อมูล GPS แบบเรียลไทม์ในอัตราประมาณ 5,000 ราคา นาที (จากเซิร์ฟเวอร์ TCP 4 แห่ง) แต่ละเซิร์ฟเวอร์ใช้การเชื่อมต่อเดียวเพื่อแทรกข้อมูลและบัฟเฟอร์ข้อมูลระหว่างแทรก ทุกๆ 15 นาทีหรือมากกว่านั้นบริการจะดึงข้อมูลนี้และประมวลผลไปยังการเดินทาง เมื่อสร้างการเดินทางแล้วข้อมูล GPS ที่แท้จริงมักไม่สำคัญนักหากผู้ใช้ต้องการเห็นเส้นทางบนแผนที่ ปัญหาคือดูเหมือนว่าฐานข้อมูลกำลังดิ้นรนเพื่อให้ทันกับอัตราของข้อมูลที่ถูกแทรก บางครั้งเมื่อโหลดเพิ่มขึ้นเวลาใส่เพิ่มสูงขึ้นอย่างกะทันหัน (> 30 วินาที) ซึ่งจะช่วยให้สามารถบัฟเฟอร์ข้อมูลได้มากขึ้นซึ่งจะส่งผลให้เม็ดมีดมีขนาดใหญ่ขึ้น ฉันหวังว่าจะได้รับความคิดเห็นเกี่ยวกับการออกแบบในปัจจุบันและความคิดบางอย่างที่เราต้องปรับปรุงประสิทธิภาพและคำตอบสำหรับคำถามของเรา - และเคล็ดลับอื่น ๆ ที่ผู้คนอาจมี! การออกแบบในปัจจุบัน ขณะนี้ข้อมูลถูกแยกออกเป็นตารางที่แสดงถึงหนึ่งสัปดาห์และข้อมูลที่เก่ากว่าปีถูกเก็บถาวรลงในฐานข้อมูลรอง สิ่งทั้งหมดถูกรวมเข้าด้วยกันในมุมมองที่แก้ไขได้ซึ่งใช้สำหรับแทรกและอ่าน ออกแบบโต๊ะ รหัส (PK, ตัวระบุที่ไม่ซ้ำ) DeviceId (FK, int) PersonId (FK, int) รหัสยานพาหนะ (FK, int) TokenId (FK, int) UtcTime (PK, datetime2 …

4
ฐานข้อมูลการคัดลอก SQL Server 2012 ล้มเหลว
ฉันต้องการทำสำเนาของฐานข้อมูลใน SqlServer เดียวกัน ดังนั้นเมื่อฉันใช้ Copy Database Wizard จะเกิดข้อผิดพลาด: (ฉันทำตามขั้นตอนนี้ด้วยฐานข้อมูลทดสอบและใช้งานได้ดี !!!!) การตั้งค่า: ผู้ใช้ sa วิธีการ: "ใช้วิธีการจัดการวัตถุ SQL" เลือกชื่อใหม่สำหรับฐานข้อมูลปลายทาง ข้อผิดพลาด: TITLE: คัดลอกตัวช่วยสร้างฐานข้อมูล งานล้มเหลว ตรวจสอบบันทึกเหตุการณ์บนเซิร์ฟเวอร์ปลายทางสำหรับรายละเอียด ------------------------------ ปุ่ม: ตกลง ในบันทึกเหตุการณ์: ระบบ ผู้ให้บริการ [ชื่อ] SQLSERVERAGENT กิจกรรม ID 208 [ตัวระบุคุณสมบัติ] 16384 ระดับ 3 งาน 3 คำหลัก 0x80000000000000 TimeCreated [SystemTime] 2014-05-07T06: 23: 11.000000000Z EventRecordID 123672 Channel Application …

2
AlwaysOn Availability Group Failover อัตโนมัติไม่ทำงาน
เล่นกับการตั้งค่า AG ฉันได้ WSFC ขึ้นและกำหนดค่าด้วยสองโหนดในกลุ่มความพร้อมใช้งานหนึ่งกลุ่มที่เรียกว่า DevClusterOnline ทั้งสองโหนด (หลัก DEV-AWEB5, DEV-AWEB6 รอง) กำลังเรียกใช้ Windows Server 2008 R2 หากฉันตรวจสอบสุขภาพของ AG ของฉันฉันจะได้รับสิ่งนี้: การเรียกใช้คิวรีด้านล่างจะส่งคืนชุดผลลัพธ์นี้: select ar.replica_server_name, availability_group_name = ag.name, ar.availability_mode_desc, ar.failover_mode_desc from sys.availability_replicas ar inner join sys.availability_groups ag on ar.group_id = ag.group_id order by availability_group_name, replica_server_name; ถ้าฉันตัดการเชื่อมต่อ DEV-AWEB5 ฉันไม่สามารถเชื่อมต่อกับกลุ่มฟัง (DevListener) แต่ฉันสามารถ ping มันและมันจะตอบสนองต่อ ping …

3
วนลูปผ่านค่าที่ลอก 1 อักขระในแต่ละครั้ง
ฉันต้องการวนลูปผ่านค่าและดึง 1 ตัวอักษรทีละตัวจากค่าและแสดงผลลัพธ์ ดังนั้นถ้าฉันมีตารางที่มีค่า: ID ___ 34679 13390 89906 ฉันต้องการให้ผลลัพธ์เป็นแบบนี้ Id ---- 4679 679 79 9 3390 390 90 0 9906 906 06 6

1
ตาราง _TransactionIndex ที่ไม่รู้จักในฐานข้อมูล Azure SQL
เพิ่งสังเกตเห็นว่าวันนี้มีตารางสุ่มในฐานข้อมูล Azure SQL ของฉันที่ชื่อ "_TransactionIndex_ {guid}" มันมี 1 คอลัมน์รหัสที่มี 8 GUID ไม่พบข้อมูลเกี่ยวกับตารางนี้ - มันคืออะไร หมายความว่าฉันมีปัญหากับการทำธุรกรรมภายในแอปพลิเคชันของฉันหรือไม่

2
การออกแบบคลังข้อมูลสำหรับการรายงานข้อมูลกับเขตเวลาต่างๆ
เรากำลังพยายามปรับการออกแบบคลังข้อมูลให้เหมาะสมซึ่งจะสนับสนุนการรายงานข้อมูลสำหรับเขตเวลาต่างๆ ตัวอย่างเช่นเราอาจมีรายงานมูลค่ากิจกรรมหนึ่งเดือน (หลายล้านแถว) ที่ต้องแสดงกิจกรรมที่จัดกลุ่มตามชั่วโมงของวัน และแน่นอนว่าชั่วโมงของวันนั้นจะต้องเป็นชั่วโมง "ท้องถิ่น" สำหรับเขตเวลาที่กำหนด เรามีการออกแบบที่ทำงานได้ดีเมื่อเราเพิ่งสนับสนุน UTC และเวลาท้องถิ่น การออกแบบมาตรฐานของมิติวันที่และเวลาสำหรับ UTC และเวลาท้องถิ่นรหัสของบนตารางข้อมูลจริง อย่างไรก็ตามวิธีการดังกล่าวดูเหมือนจะไม่ขยายหากเราต้องสนับสนุนการรายงานสำหรับเขตเวลา 100+ ตารางความจริงของเรากว้างขึ้นมาก นอกจากนี้เราจะต้องแก้ปัญหาไวยากรณ์ใน SQL เพื่อระบุวันที่และเวลาที่จะใช้สำหรับการจัดกลุ่มในการเรียกใช้รายงานใด ๆ อาจเป็นคำสั่งกรณีที่มีขนาดใหญ่มาก? ฉันเห็นคำแนะนำเพื่อรับข้อมูลทั้งหมดตามช่วงเวลา UTC ที่คุณครอบคลุมจากนั้นส่งคืนไปยังเลเยอร์การนำเสนอเพื่อแปลงเป็นแบบโลคัลและรวมที่นั่น แต่การทดสอบที่ จำกัด กับ SSRS ชี้ให้เห็นว่าจะช้ามาก ฉันได้อ่านหนังสือบางเล่มเกี่ยวกับเรื่องนี้ด้วยและพวกเขาทั้งหมดพูดว่ามีเพียง UTC และแปลงเป็นไฟล์แสดงหรือมี UTC และหนึ่งในท้องถิ่น จะขอบคุณความคิดและข้อเสนอแนะใด ๆ หมายเหตุ: คำถามนี้คล้ายกับ: การจัดการโซนเวลาใน data mart / warehouseแต่ฉันไม่สามารถแสดงความคิดเห็นกับคำถามนั้นได้ดังนั้นรู้สึกว่าสมควรได้รับคำถามของตัวเอง อัปเดต:ฉันเลือกคำตอบของแอรอนหลังจากเขาทำการอัปเดตที่สำคัญและโพสต์โค้ดตัวอย่างและไดอะแกรม ความคิดเห็นก่อนหน้าของฉันเกี่ยวกับคำตอบของเขาจะไม่สมเหตุสมผลอีกต่อไปเนื่องจากพวกเขาอ้างถึงการแก้ไขคำตอบเดิม ฉันจะพยายามกลับมาและอัปเดตสิ่งนี้อีกครั้งหากรับประกัน

3
ฉันจะค้นหาตารางทั้งหมดในฐานข้อมูลที่ไม่มีคีย์หลักที่ชัดเจนได้อย่างไร
การค้นหาของ Google ได้กล่าวถึงจำนวนล้านครั้งของวิธีการค้นหาตารางที่ไม่มีการทำดัชนีแบบกลุ่มโดยปกติ PK จะเป็นดัชนีแบบกลุ่มของตาราง อย่างไรก็ตามตารางสามารถมีคีย์ธรรมชาติได้อย่างง่ายดายเป็นดัชนีคลัสเตอร์และดัชนีตัวแทนเสมือนที่ไม่ทำคลัสเตอร์เช่นคอลัมน์ข้อมูลประจำตัว ฉันจะค้นหาตารางทั้งหมดในฐานข้อมูลโดยไม่มีคีย์หลักได้อย่างไร ฉันมี 245 ตารางในฐานข้อมูลนี้: การตรวจสอบด้วยตนเองไม่มีประสิทธิภาพอย่างไม่มีการลด

1
ประสิทธิภาพการสืบค้นต่ำ
เรามีกระบวนการขนาดใหญ่ (10,000+ บรรทัด) ซึ่งโดยทั่วไปแล้วจะทำงานใน 0.5-6.0 วินาทีขึ้นอยู่กับปริมาณข้อมูลที่ต้องใช้งาน ในช่วงเดือนที่ผ่านมาหรือประมาณ 30 กว่าวินาทีหลังจากเราอัปเดตสถิติด้วย FULLSCAN เมื่อมันช้าลง sp_recompile "แก้ไข" ปัญหาจนกว่างานสถิติรายค่ำคืนจะทำงานอีกครั้ง ด้วยการเปรียบเทียบแผนการดำเนินการที่ช้าและเร็วฉันได้ จำกัด ให้แคบลงเป็นตาราง / ดัชนีเฉพาะ เมื่อมันทำงานช้ามันกำลังประมาณ ~ 300 แถวจะถูกส่งคืนจากดัชนีเฉพาะเมื่อมันทำงานเร็วมันจะประมาณ 1 แถว เมื่อรันช้ามันจะใช้ Table Spool หลังจากทำการค้นหาบนดัชนีเมื่อมันรันเร็วมันจะไม่ทำ Spool Table ใช้ DBSS SHOW_STATISTICS ฉันทำกราฟฮิสโตแกรมดัชนีใน excel ปกติแล้วฉันจะคาดหวังว่ากราฟจะเป็น "ภูเขากลิ้ง" มากกว่า แต่ดูเหมือนว่าภูเขาซึ่งเป็นจุดที่สูงที่สุดคือ 2x-3x สูงกว่าค่าอื่น ๆ ส่วนใหญ่บนกราฟ หากฉันอัปเดตสถิติโดยไม่มี FULLSCAN มันจะดูเป็นปกติมากกว่า ถ้าฉันเรียกใช้ด้วย FULLSCAN อีกครั้งดูเหมือนว่าฉันอธิบายไว้ข้างต้น …

2
เป็นไปได้หรือไม่ที่จะกรองรายการฐานข้อมูลใน Object Explorer ของ SSMS
ฉันรู้วิธีกรองรายการตาราง - ใช้ไอคอนตัวกรอง อย่างไรก็ตามไอคอนนี้ถูกปิดใช้งานเมื่อเลือกโหนดฐานข้อมูล ยังฉันสงสัยว่ามันเป็นไปได้
10 sql-server  ssms 

2
เมื่อใดที่ต้องทำการเปลี่ยนแปลงเกณฑ์ต้นทุนสำหรับการขนาน
ในขณะที่ตรวจสอบปัญหาประสิทธิภาพฉันได้เห็นการไหลเข้าของ CXPACKETS แนะนำว่าฉันอาจต้องดูเกณฑ์ต้นทุนสำหรับการขนานและบางที MAXDOP ก่อนที่จะทำการเปลี่ยนแปลงอย่างรุนแรงต่อ MAXDOP ฉันได้ทำตามคำแนะนำของคนอื่น ๆ รวมถึง @mrdenny ในคำตอบของCXPACKET รอการปรับแต่งประสิทธิภาพสำหรับ SQL Server 2008และคำตอบของ @ aron-Bertrand จากการจัดการกับ CXPACKET ขนาน ฉันได้เพิ่มในการบำรุงรักษาเพื่ออัปเดตสถิติอย่างเต็มที่ทุกคืน นี่ให้ความรู้สึกเหมือนเป็นการเคลื่อนไหวที่สมเหตุสมผล อย่างไรก็ตามการแก้ไขเกณฑ์ต้นทุนยังคงเป็นสิ่งที่ทำให้ฉันรำคาญ เกณฑ์ต้นทุนสำหรับการขนานนั้นควรมีการเปลี่ยนแปลงที่จุดใด ไม่มีใครมีตัวอย่างของที่ (หลังจากตรวจสอบค่าใช้จ่ายของแบบสอบถามและภาระงานของพวกเขา) พวกเขาทำการเปลี่ยนแปลงค่าใช้จ่ายนี้หรือไม่? ขออภัยหากนี่เป็นสิ่งที่ตอบไว้ในคำถามก่อนหน้านี้ ขอบคุณ!

1
การส่งชื่อคอลัมน์แบบไดนามิกไปที่ UNPIVOT
ฉันมีตารางที่มีข้อมูลต่อไปนี้ First Second Third Fourth Fifth Sixth 2013-08-20 2013-08-21 2013-08-22 2013-08-23 2013-08-24 2013-08-25 และการใช้งาน UNPIVOT SELECT Data ,DATENAME(DW, Data) AS DayName FROM Cal UNPIVOT(Data FOR D IN ( First, Second, Third, Fourth, Fifth, Sixth )) AS unpvt ฉันได้รับผลลัพธ์ต่อไปนี้ Data DayName 2013-08-20 Tuesday 2013-08-21 Wednesday 2013-08-22 Thursday 2013-08-23 Friday 2013-08-24 Saturday …

1
ผงชูรส 666 เมื่อเรียกใช้แบบสอบถามแทรกในตารางดัชนี 80M แถว
น่าแปลกที่กระบวนการจัดเก็บของฉันเริ่มได้รับข่าวสารเกี่ยวกับ 666 สำหรับข้อมูลอินพุตบางส่วน กระบวนงานที่เก็บไว้ล้มเหลวในขั้นตอนสุดท้ายเมื่อพยายามแทรกแถวลงในตารางด้วยโครงสร้างต่อไปนี้: Columns: A_Id: PK, int B_Id: PK, FK, int C_Id: PK, FK, int D_Id: PK, smallint นี่คือตารางที่เชื่อมโยงเอนทิตีที่อ้างอิงทั้งหมดเข้าด้วยกัน Indexes: IX_TableName_D_id - Clustered index on D_id column PK_TableName - Unique non-clustered index on all columns (A_Id, B_Id, C_Id, D_Id) การกระจายตัวของดัชนีทั้งสองอยู่ในระดับต่ำ (<25%) อย่างไรก็ตามการแตกแฟรกเมนต์ PK_TableName เติบโตอย่างรวดเร็วเนื่องจากจำนวนการดำเนินการบนตารางค่อนข้างรุนแรง ขนาดโต๊ะ: Row count: ~80,000,000 rows …

3
ขนาดฐานข้อมูล - MDF ใหญ่เกินไป?
ฉันกำลังบำรุงรักษาฐานข้อมูล SQL Server 2005 ซึ่งโฮสต์ประมาณ 2.9Tb ของข้อมูล (2 x 1.45Tb - ฉันมี schema RAW และ schema การวิเคราะห์ดังนั้นโดยทั่วไปแล้วสองชุดของข้อมูลที่ติดเครื่อง) รูปแบบการกู้คืนง่ายและ.ldfอยู่ที่ 6Gb ไม่ว่าจะด้วยเหตุผลใดก็ตาม.mdfคือ 7.5Tb ตอนนี้อาจมีคอลัมน์เพิ่มเติมเพียง 2-3 คอลัมน์ในตารางวิเคราะห์และมีNVARCHAR(MAX)คอลัมน์ไม่มากซึ่งจากสิ่งที่ฉัน (อาจเข้าใจผิด - โปรดแก้ไขให้ถูกต้องถ้าฉันผิด) อาจทำให้เกิดการจัดสรรพื้นที่เพิ่มเติม หลังจากหดฐานข้อมูลตอนนี้ - มันอยู่ที่ ~ 9Tb ก่อนหน้านั้น ความคิดใด ๆ และโปรดแจ้งให้เราทราบหากคุณมีคำถามเพิ่มเติม - ฉันยังใหม่ต่อการดูแลฐานข้อมูลและการเพิ่มประสิทธิภาพ (โดยปกติฉันจะไม่ทำงานด้านนี้ :)) ขอบคุณมาก! Andrija

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