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

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

1
การสแกนค่าคงที่และการเข้าร่วม Outer Left มาจากที่ใดในแผนคิวรี SELECT ที่สำคัญ
ฉันมีตารางนี้: CREATE TABLE [dbo].[Accounts] ( [AccountId] UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWID(), -- WHATEVER other columns ); GO CREATE UNIQUE CLUSTERED INDEX [AccountsIndex] ON [dbo].[Accounts]([AccountId] ASC); GO แบบสอบถามนี้: DECLARE @result UNIQUEIDENTIFIER SELECT @result = AccountId FROM Accounts WHERE AccountId='guid-here' ดำเนินการกับแผนแบบสอบถามประกอบด้วยดัชนีแสวงหาเดียว - ตามที่คาดไว้: SELECT <---- Clustered Index Seek แบบสอบถามนี้ไม่เหมือนกัน: DECLARE @result …

1
ชุดข้อมูลสถิติ IO- โต๊ะทำงาน / ไฟล์งาน
ฉันกำลังดำเนินการแบบสอบถามที่สร้างแผน: สถิติ IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads …

1
สิ่งใดที่ SQL Server 2014 สามารถใช้งานได้ในโหมดแบตช์
เมื่อมีการใช้ดัชนี columnstore ในแบบสอบถาม SQL Server จะสามารถใช้โหมดแบตช์ เอกสารมีความบางในสิ่งที่สามารถทำงานในโหมดแบทช์และสิ่งที่ไม่สามารถทำได้ โปรดดูแผนแบบสอบถาม (สร้างแรงบันดาลใจ) ต่อไปนี้ซึ่งมีสิ่งน่าแปลกใจจำนวนหนึ่งที่ดำเนินการในโหมดแบทช์ (สีเขียว) (นี่เป็นแผนโดยประมาณฉันใช้แผนจริงเพื่อตรวจสอบว่าโหมดการปฏิบัติจริงเป็นแบทช์จริง ๆ ) โปรดทราบว่าเฉพาะด้านบิลด์ของ T1 เท่านั้นที่ใช้ดัชนี columnstore โพรบอินพุตทั้งหมด (T2 และ T3) เป็นแถว ข้อมูลของพวกเขาดูเหมือนจะเปลี่ยนเป็นโหมดแบทช์ ฉันคิดเสมอว่ามีการใช้งานโหมดแบตช์สำหรับกระแสข้อมูลที่ไหลผ่านด้านโพรบเท่านั้น ดูเหมือนว่าข้อมูลสามารถเปลี่ยนเป็นโหมดแบตช์แม้ว่าจะไม่ได้มาจากดัชนีของคอลัมน์ นั่นทำให้เกิดคำถาม: ทำไม SQL Server ถึงไม่ใช้โหมดแบตช์สำหรับการสืบค้นแบบแถวเรียงเท่านั้นเช่นกัน อาจเป็นประโยชน์สำหรับบางคน การใช้ดัชนี columnstore เป็นข้อกำหนดอย่างเป็นทางการที่จำเป็นเพื่อให้ SQL Server พิจารณาโหมดแบตช์หรือไม่ เราอาจจะเพิ่มตารางดัมมี่แถวศูนย์ด้วยดัชนีแบบคอลัมน์เพื่อกระตุ้นโหมดแบทช์และรับประสิทธิภาพที่เพิ่มขึ้นได้หรือไม่? สิ่งที่สามารถทำงานในโหมดแบตช์ในฐานะของ SQL Server 2014 ได้อย่างแน่นอน

1
สถิติหายไปหลังจากการอัพเดตที่เพิ่มขึ้น
เรามีฐานข้อมูล SQL Server ขนาดใหญ่ที่แบ่งพาร์ติชันโดยใช้สถิติที่เพิ่มขึ้น ดัชนีทั้งหมดได้รับการแบ่งพาร์ติชันแล้ว เมื่อเราพยายามที่จะสร้างพาร์ติชันออนไลน์ใหม่โดยการแบ่งพาร์ติชันสถิติทั้งหมดจะหายไปหลังจากสร้างดัชนีใหม่ ด้านล่างเป็นสคริปต์เพื่อทำซ้ำปัญหาใน SQL Server 2014 ด้วยฐานข้อมูล AdventureWorks2014 --Example against AdventureWorks2014 Database CREATE PARTITION FUNCTION TransactionRangePF1 (DATETIME) AS RANGE RIGHT FOR VALUES ( '20130501', '20130601', '20130701', '20130801', '20130901', '20131001', '20131101', '20131201', '20140101', '20140201', '20140301' ); GO CREATE PARTITION SCHEME TransactionsPS1 AS PARTITION TransactionRangePF1 TO ( [PRIMARY], …

3
การใช้ CPU มีผลต่อค่าใช้จ่ายของการเข้าถึง NUMA จากต่างประเทศหรือไม่
สถานการณ์ สมมติว่าฉันมีเซิร์ฟเวอร์ SQL ที่มี 4 ซ็อกเก็ตแต่ละโหนด 1 NUMA ซ็อกเก็ตแต่ละอันมี 4 คอร์ทางกายภาพ มีหน่วยความจำรวม 512 GB ดังนั้นแต่ละ NUMA node มี RAM 128 GB ตารางคีย์ถูกโหลดลงในโหนด NUMA แรก คำถาม สมมติว่าเรามีปริมาณการอ่านข้อมูลจำนวนมากจากตารางนั้น หากแกนประมวลผลทางกายภาพทั้งหมดของซ็อกเก็ตที่เป็นเจ้าของโหนด NUMA มีการใช้ CPU 100 เปอร์เซ็นต์นั่นจะส่งผลเสียต่อต้นทุนการเข้าถึง NUMA ที่ไม่ใช่ภายในเครื่องที่มาจากซ็อกเก็ตอื่นหรือไม่ หรือในทางกลับกันค่าใช้จ่ายของการเข้าถึง NUMA ที่ไม่ได้อยู่ในพื้นที่นั้นไม่ว่าซ็อกเก็ตนั้นจะยุ่งแค่ไหน? ฉันหวังว่าคำถามของฉันจะสมเหตุสมผล โปรดแจ้งให้เราทราบหากไม่พยายามชี้แจง พื้นหลัง เรามีปัญหาฐานข้อมูลในเซิร์ฟเวอร์การผลิตของเราเมื่อสัปดาห์ที่แล้วและบางส่วนของธุรกิจของเราได้รับผลกระทบมากกว่าคนอื่น ๆ เรามีข้อความค้นหาที่มีการอ่านเชิงตรรกะน้อยกว่า 1 นาที เราดูการใช้งาน CPU โดยรวมประมาณร้อยละ 60 เราไม่ได้ดูการวัดซีพียูเฉพาะซ็อกเก็ต …

5
เหตุใดการส่งข้อมูลที่ชัดเจนนี้ทำให้เกิดปัญหากับเซิร์ฟเวอร์ที่เชื่อมโยงเท่านั้น
ฉันกำลังสืบค้นข้อมูลจากเซิร์ฟเวอร์ที่เชื่อมโยงผ่านมุมมองบนเซิร์ฟเวอร์ต้นทาง มุมมองต้องรวมคอลัมน์มาตรฐานสองสามมาตรฐานเช่นCreated, ModifiedและDeleted, แต่ในกรณีนี้ตารางบนเซิร์ฟเวอร์ต้นทางไม่มีข้อมูลที่เหมาะสม คอลัมน์จึงถูกส่งไปยังประเภทที่เกี่ยวข้องอย่างชัดเจน ฉันอัปเดตมุมมองเปลี่ยนคอลัมน์จาก NULL AS Modified ไปยัง CAST(NULL as DateTime) as Modified อย่างไรก็ตามหลังจากดำเนินการอัปเดตนี้มุมมองกำลังเรียกใช้ข้อความแสดงข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 7341 ระดับ 16 สถานะ 2 บรรทัด 3 ไม่สามารถรับค่าแถวปัจจุบันของคอลัมน์ "(นิพจน์ที่ผู้ใช้สร้างขึ้น). Expr1002" จากผู้ให้บริการ OLE DB "SQLNCLI11" สำหรับเซิร์ฟเวอร์ที่เชื่อมโยง "" เราได้ทำ "การแปลงที่ชัดเจน" โดยทั่วไปทั่วเซิร์ฟเวอร์ต้นทางโดยไม่ต้องกังวลและฉันสงสัยว่าปัญหาอาจเกี่ยวข้องกับรุ่นของเซิร์ฟเวอร์ที่เกี่ยวข้อง เราไม่จำเป็นต้องใช้นักแสดงนี้ แต่มันรู้สึกสะอาดขึ้น ตอนนี้ฉันแค่อยากรู้ว่าทำไมสิ่งนี้เกิดขึ้น รุ่นเซิร์ฟเวอร์ (ที่มา): Microsoft SQL Server 2012 - 11.0.5058.0 (X64) 14 พฤษภาคม …

5
SQL Server ไม่เริ่มทำงานเมื่อเริ่มต้น Windows แต่เริ่มต้นด้วยตนเอง
บริการของ SQL Server (SQL Server 2008 R2 Express) ของอินสแตนซ์ของฉันมีประเภทการเริ่มต้น = อัตโนมัติ สองสามครั้งที่ผ่านมาฉันรีสตาร์ทคอมพิวเตอร์ของฉันบริการล้มเหลวในการเริ่มต้นด้วยตัวเอง แต่มันก็เริ่มต้นได้ดีเมื่อฉันเริ่มบริการด้วยตนเอง ตัวแสดงเหตุการณ์แสดงว่าบริการไม่สามารถเริ่มทำงานได้เนื่องจากการหมดเวลาเชื่อมต่อ มี 2 ​​รายการที่เกี่ยวข้องกับการหมดเวลานี้: รายการที่ 1 หมดเวลาถึง (30000 มิลลิวินาที) ในขณะที่รอบริการ SQL Server (SQLEXPRESS) เพื่อเชื่อมต่อ รายการที่ 2 บริการ SQL Server (SQLEXPRESS) ล้มเหลวในการเริ่มต้นเนื่องจากข้อผิดพลาดต่อไปนี้: บริการไม่ตอบสนองต่อการร้องขอการเริ่มต้นหรือการควบคุมในเวลาที่เหมาะสม ฉันตรวจสอบไฟล์ ERRORLOG และไม่มีข้อผิดพลาดในการบันทึกเวลาของรายการ Event Viewer เหล่านั้น ความคิดเห็นใด ๆ เกี่ยวกับสาเหตุของปัญหานี้หรือฉันจะตรวจสอบเพิ่มเติมได้อย่างไร

3
เหตุใดตารางจึงใช้คีย์หลักเป็นคีย์ต่างประเทศเพื่อตัวของมันเอง
เมื่อดูจากฐานข้อมูลฉันเจอตารางที่ใช้คีย์หลักเป็นรหัสต่างประเทศกับตัวเอง ฉันเคยเห็นว่าตารางสามารถมี foreign key เป็นของตัวเองเพื่อสร้างโครงสร้างลำดับชั้น แต่จะใช้คอลัมน์อื่นเพื่ออ้างอิงคีย์หลัก เนื่องจากคีย์หลักไม่ซ้ำกันในสถานการณ์นี้แถวจะไม่สามารถชี้กลับไปที่ตัวเองได้หรือไม่ นั่นดูเหมือนจะเป็นการเชื่อมโยงที่ซ้ำซากเพราะถ้าฉันมีแถวอยู่แล้วฉันก็มีแถวอยู่แล้ว มีเหตุผลใดที่จะทำเช่นนี้? ฉันมั่นใจว่าข้อ จำกัด นั้นถูกเขียนขึ้นมาอย่างนั้น (ไม่ใช่แค่ดูที่แผนภาพ) เพราะตารางและคอลัมน์เดียวกันนั้นถูกใช้สำหรับคำจำกัดความทั้งสองครึ่ง

2
เป็นไปได้ไหมที่จะดูค่า LRU-K ใน SQL Server
ใน SQL Server sys.dm_os_memory_cache_entriesเป็นไปได้ที่จะดูทั้งต้นทุนดั้งเดิมของรายการในแคชรวมถึงต้นทุนปัจจุบันของรายการแคช ( original_costและcurrent_costตามลำดับ) DMV sys.dm_os_buffer_descriptorsมีการบันทึกหน้าเว็บที่อยู่ในหน่วยความจำในปัจจุบันเช่นเดียวกับข้อมูลเมตาบางส่วนเกี่ยวกับหน้า ข้อมูลอันน่าสนใจอย่างหนึ่งที่ไม่มีใน DVM คือค่า LRU-K สำหรับหน้าข้อมูล เป็นไปได้หรือไม่ที่จะรับค่า LRU-K สำหรับหน้าข้อมูลในบัฟเฟอร์พูลใน SQL Server ถ้าเป็นเช่นนั้นได้อย่างไร
21 sql-server 

6
ใน SQL Server มีวิธีการตรวจสอบว่ากลุ่มแถวที่เลือกถูกล็อคหรือไม่?
เราพยายามที่จะปรับปรุง / ลบบันทึกจำนวนมากในตารางแถวหลายพันล้าน เนื่องจากนี่เป็นตารางยอดนิยมจึงมีกิจกรรมมากมายในส่วนต่างๆของตารางนี้ กิจกรรมการอัปเดต / ลบขนาดใหญ่ใด ๆ จะถูกปิดกั้นเป็นระยะเวลานาน (เนื่องจากกำลังรอการล็อคในแถวหรือการล็อกหน้าหรือการล็อคตาราง) ทำให้หมดเวลาหรือใช้เวลาหลายวันเพื่อทำงานให้เสร็จ ดังนั้นเรากำลังเปลี่ยนวิธีการลบแถวเล็ก ๆ ในเวลาเดียวกัน แต่เราต้องการตรวจสอบว่าแถวที่เลือก (สมมติว่า 100 หรือ 1,000 หรือ 2,000 แถว) ปัจจุบันถูกล็อคโดยกระบวนการที่แตกต่างกันหรือไม่ ถ้าไม่เช่นนั้นดำเนินการลบ / อัปเดต หากพวกเขาถูกล็อคให้ย้ายไปยังกลุ่มระเบียนถัดไป ในตอนท้ายกลับมาที่จุดเริ่มต้นและพยายามอัปเดต / ลบสิ่งที่เหลือไว้ เป็นไปได้หรือไม่ ขอบคุณ ToC

2
มาตรการและขนาดในลูกบาศก์คืออะไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 6 ปีที่แล้ว ฉันยังใหม่กับ Microsoft Sql Server Business Intelligence และAnalysis Service(แต่ฉันเขียนโปรแกรมเป็นเวลาหลายปีกับ SQL Server) ใครสามารถอธิบายมาตรการและมิติในคิวบ์ได้ในคำง่ายๆ (ถ้าเป็นไปได้กับรูปภาพ)? ขอบคุณ

2
พูลการเชื่อมต่อถูกรีเซ็ตด้วยข้อผิดพลาด: 18056, ความรุนแรง: 20, สถานะ: 46. และตัวนับ Perfmon ไม่แสดง
เราใช้การรับรองความถูกต้องของ SQL (เพื่อลดจำนวนพูลการเชื่อมต่อ) & สตริงการเชื่อมต่อ. NET 4.0 เพื่อเชื่อมต่อกับ SQL Server Enterprise Edition 2012 SP1 บนเซิร์ฟเวอร์ Windows 2008 R2 Enterprise: Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 19 ตุลาคม 2555 13:38:57 ลิขสิทธิ์ (c) Microsoft Corporation รุ่นองค์กร (64 บิต) บน Windows NT 6.1 (รุ่น 7601: Service Pack 1) เราใช้เซิร์ฟเวอร์ประมาณ 50 เซิร์ฟเวอร์แบ่งออกเป็น …

1
ค้นหาแบบสอบถามทั้งหมดที่ดำเนินการเมื่อเร็ว ๆ นี้ในฐานข้อมูล
[ฉันเป็นโปรแกรมเมอร์ T-SQL ระดับเริ่มต้น] [.. และหวังว่าฉันจะอยู่ในไซต์แลกเปลี่ยนสแต็คที่เหมาะสม] ฉันต้องการรับรายการคำถามทั้งหมดที่ฉันดำเนินการ (อย่างน้อยที่สุดคำถามที่ฉันดำเนินการตั้งแต่เช้า) ฉันต้องการรายงานเกี่ยวกับเวลาดำเนินการของแบบสอบถาม การค้นหาออนไลน์ไม่ได้ให้ข้อมูลที่มีประโยชน์กับฉันมากนัก ข้อความค้นหาเดียวที่ฉันพบทางออนไลน์ซึ่งดูเหมือนว่าใกล้เคียงกันมาก SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC ข้อความค้นหานี้ส่งกลับผลลัพธ์แปลก ๆ (ส่วนใหญ่เป็นกลุ่มของ sprocs) ยิ่งกว่านั้นผลลัพธ์ทั้งหมดเหล่านี้แสดงข้อความค้นหาที่ดำเนินการตั้งแต่บ่ายวันนี้ (ฉันต้องการข้อความค้นหาตั้งแต่เช้า) ฉันไม่พบสิ่งใดในคำถามก่อนหน้า (หากคำถามที่คล้ายกันได้ถูกถามไปแล้วโปรดชี้ให้ฉันเห็น) ฉันเห็นคำแนะนำบางอย่างเกี่ยวกับ SQL Profiler แต่ฉันเดาว่า Profiler จะช่วยฉันเฉพาะเมื่อฉันเริ่มต้นการติดตามแล้ว (แก้ไขฉันถ้าฉันผิด) ใครช่วยแนะนำฉันว่าฉันควรจะได้รับรายการของแบบสอบถามทั้งหมดที่มีการดำเนินการในฐานข้อมูลตั้งแต่เช้า (รวมถึงเวลาดำเนินการแบบสอบถาม) .. [มันจะมีประโยชน์ (ไม่ใช่ข้อกำหนด) …

3
ลำดับชั้นต้นไม้พ่อแม่และลูก
ฉันต้องติดตามข้อมูลใน SQL Server 2008 R2 SQLFiddle schema: สร้างตาราง [dbo] [ICFilters] ( [ICFilterID] [int] ตัวตน (1,1) ไม่เป็นโมฆะ [ParentID] [int] ไม่เสียค่าเริ่มต้น 0 [FilterDesc] [varchar] (50) ไม่เป็นโมฆะ [ใช้งาน] [tinyint] ไม่เป็นค่าเริ่มต้น 1 CONSTRAINT [PK_ICFilters] คีย์หลักที่คลัสเตอร์ ([ICFilterID] ASC) พร้อม PAD_INDEX = ปิด STATISTICS_NORECOMPUTE = OFF IGNORE_DUP_KEY = ปิด ALLOW_ROW_LOCKS = เปิด ALLOW_PAGE_LOCKS = เปิด ) …

3
ฉันสามารถใช้ SQL Server Management Studio 2012 บนเซิร์ฟเวอร์ 2008 ได้หรือไม่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา โรงเรียนของฉันใช้ SQL Server 2008 ครั้งล่าสุดที่ฉันใช้ฉันเพิ่งติดตั้ง (ที่บ้าน) ส่วน SQL Server Management Studio 2008 และใช้ VPN เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของโรงเรียน ตอนนี้ฉันต้องการติดตั้ง SQL Server Management Studio อีกครั้ง แต่คราวนี้รุ่น 2012 พร้อมใช้งานแล้ว SQL Server Management Studio 2012 จะทำงานกับ SQL Server 2008 ของโรงเรียนหรือไม่ หรือฉันต้องการเวอร์ชั่น 2008?
21 sql-server  ssms 

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