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

SQL Server 2012 (รุ่นบิลด์หลัก 11.00.xxxx) โปรดติดแท็ก sql-server ด้วย

3
การสร้างดัชนีที่ไม่เป็นคลัสเตอร์บน SQL Server ที่คำนวณแบบไม่คอลัมน์
ฉันกำลังดิ้นรนเพื่อค้นหาเอกสารใด ๆ เกี่ยวกับวิธีที่ SQL Server จัดเก็บคอลัมน์ที่คำนวณได้แบบไม่ยืนยัน นำตัวอย่างต่อไปนี้: --SCHEMA CREATE TABLE dbo.Invoice ( InvoiceID INT IDENTITY(1, 1) PRIMARY KEY, CustomerID INT FOREIGN KEY REFERENCES dbo.Customer(CustomerID), InvoiceStatus NVARCHAR(50) NOT NULL, InvoiceStatusID AS CASE InvoiceStatus WHEN 'Sent' THEN 1 WHEN 'Complete' THEN 2 WHEN 'Received' THEN 3 END ) GO --INDEX CREATE NONCLUSTERED …

4
รีเซ็ตผลรวมการรันตามคอลัมน์อื่น
กำลังพยายามคำนวณผลรวมสะสม แต่ควรรีเซ็ตเมื่อยอดรวมสะสมมากกว่าค่าคอลัมน์อื่น create table #reset_runn_total ( id int identity(1,1), val int, reset_val int, grp int ) insert into #reset_runn_total values (1,10,1), (8,12,1),(6,14,1),(5,10,1),(6,13,1),(3,11,1),(9,8,1),(10,12,1) SELECT Row_number()OVER(partition BY grp ORDER BY id)AS rn,* INTO #test FROM #reset_runn_total รายละเอียดดัชนี: CREATE UNIQUE CLUSTERED INDEX ix_load_reset_runn_total ON #test(rn, grp) ข้อมูลตัวอย่าง +----+-----+-----------+-----+ | id | val | …

2
การปรับปรุงตัวอย่าง SQL Server ของสถิติพลาด RANGE_HI_KEY สูงสุดในคอลัมน์คีย์จากน้อยไปมาก
ฉันกำลังพยายามที่จะเข้าใจว่าการสุ่มตัวอย่างสถิติทำงานอย่างไรและพฤติกรรมด้านล่างนี้เป็นสิ่งที่คาดหวังในการอัปเดตสถิติตัวอย่างหรือไม่ เรามีตารางขนาดใหญ่แบ่งพาร์ติชันตามวันที่โดยมีแถวสองพันล้านแถว วันที่พาร์ทิชันเป็นวันที่ธุรกิจก่อนหน้านี้และเป็นคีย์จากน้อยไปมาก เราโหลดข้อมูลลงในตารางนี้ในวันก่อนหน้าเท่านั้น การโหลดข้อมูลทำงานข้ามคืนดังนั้นในวันศุกร์ที่ 8 เมษายนเราโหลดข้อมูลสำหรับวันที่ 7 FULLSCANหลังจากทำงานในแต่ละเราปรับปรุงสถิติแม้จะใช้กลุ่มตัวอย่างมากกว่า บางทีฉันอาจไร้เดียงสา แต่ฉันคาดหวังว่า SQL Server จะระบุคีย์สูงสุดและคีย์ต่ำสุดในช่วงเพื่อให้แน่ใจว่ามีตัวอย่างช่วงที่ถูกต้อง ตามบทความนี้ : สำหรับที่เก็บข้อมูลแรกขอบเขตที่ต่ำกว่าคือค่าที่เล็กที่สุดของคอลัมน์ที่สร้างฮิสโตแกรม อย่างไรก็ตามมันไม่ได้พูดถึง bucket / ค่าที่มากที่สุด ด้วยการอัพเดตสถิติตัวอย่างในตอนเช้าของวันที่ 8 ตัวอย่างจะพลาดค่าสูงสุดในตาราง (อันดับที่ 7) เนื่องจากเราทำการสืบค้นข้อมูลจากวันก่อนจำนวนมากทำให้มีการประมาณค่า cardinality ที่ไม่ถูกต้องและมีจำนวนการสอบถามที่หมดเวลา SQL Server ไม่ควรระบุค่าสูงสุดสำหรับคีย์นั้นและใช้เป็นค่าสูงสุดRANGE_HI_KEYหรือไม่ หรือเป็นเพียงแค่นี้ข้อ จำกัด ของการปรับปรุงโดยไม่ต้องใช้FULLSCAN? รุ่น SQL Server 2012 SP2-CU7 ขณะนี้เราไม่สามารถอัปเกรดได้เนื่องจากมีการเปลี่ยนแปลงOPENQUERYพฤติกรรมใน SP3 ที่มีการปัดเศษตัวเลขในแบบสอบถามเซิร์ฟเวอร์ที่เชื่อมโยงระหว่าง SQL Server และ Oracle

2
วิธีระบุพารามิเตอร์เริ่มต้นของ SQL ในการติดตั้งแบบไม่โต้ตอบผ่านบรรทัดคำสั่ง
ฉันต้องการแก้ไขข้อบกพร่องช่องว่างของตัวตนใน SQL Server 2012 ผ่าน-T272พารามิเตอร์เริ่มต้น ฉันจะทำให้สิ่งนี้เป็นอัตโนมัติหลังจากการติดตั้งได้อย่างไร ฉันไม่พบพารามิเตอร์การติดตั้งสำหรับพารามิเตอร์เริ่มต้น

3
อะไรคือการใช้การกู้คืนส่วนหัวเมื่อทำการสำรองข้อมูล?
เมื่อฉันตรวจสอบการสำรองข้อมูลของฉันด้วยแบบสอบถามต่อไปนี้: SELECT command, percent_complete, 'elapsed' = total_elapsed_time / 60000.0, 'remaining' = estimated_completion_time / 60000.0 FROM sys.dm_exec_requests WHERE command like 'BACKUP%' or command like 'RESTORE%' ฉันสังเกตว่าก่อนการสำรองข้อมูล SQL Server จะทำการคืนค่าส่วนหัวจากนั้นสำรองข้อมูล ฉันสงสัยว่ามีประโยชน์อะไรกับมันบ้างและถ้าเวลาในการประมวลผลลดลงอย่างใด ดูเหมือนจะใช้เวลานานกว่าการสำรองข้อมูลจริง

1
ไม่สามารถทำให้ SQLCMD ทำงานได้ไม่ว่าฉันจะพยายามทำอะไร
ไม่ว่าฉันจะทำอะไรฉันก็ไม่สามารถทำให้ SQLCMD ทำงานได้ ฉันพยายามเรียกใช้สคริปต์ที่มีขนาด 200mb + และไม่สามารถเรียกใช้จากแอปพลิเคชันเซิร์ฟเวอร์ sql ได้ดังนั้นฉันต้องดำเนินการผ่าน SQLCMD อย่างไรก็ตามทุกครั้งที่ฉันพยายามลงชื่อเข้าใช้หรือเรียกใช้สคริปต์สคริปต์จะปิดทันที ฉันได้ติดตามยูทิลิตี้ sqlcmd โดย msdn ฉันพยายามที่จะเปิดมันผ่านคำสั่งที่เชื่อถือได้ SQLCMD -EI รับ: Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes Provider: Could not open a connection to SQL Server [2]. . Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : …

4
FIRST () และ LAST () รุ่น SQL Server 2012 คืออะไร
ฉันมีตารางที่มีvalueคอลัมน์ ฉันต้องการคำนวณแถวสุดท้ายลบด้วยแถวแรกดังที่แสดงที่นี่: id value 1 10 2 45 3 65 4 95 . . . . . . 500 200 ฉันต้องการได้รับ 200 - 10 = 190 ฉันพยายามใช้คำสั่งด้านล่างใน SQL Server 2012 อย่างไรก็ตามLASTและFIRSTไม่ทำงาน SELECT LAST(Value) - FIRST(Value) FROM Counter; ไวยากรณ์สำหรับคำสั่งนี้ใน SQL Server คืออะไร

1
คอลัมน์“ อ่าน” ใน sys.dm_exec_sessions จริง ๆ บ่งชี้อะไร
นี่อาจดูเหมือนคำถามพื้นฐานมากและแน่นอนควรเป็นเช่นนั้น อย่างไรก็ตามในฐานะแฟนของวิธีการทางวิทยาศาสตร์ฉันชอบที่จะสร้างสมมติฐานแล้วทดสอบเพื่อดูว่าฉันถูกต้อง ในกรณีนี้ฉันพยายามทำความเข้าใจกับผลลัพธ์ของsys.dm_exec_sessionsและโดยเฉพาะคอลัมน์ "อ่าน" SQL Server Books Online ค่อนข้างจะระบุว่าเป็น: จำนวนการอ่านที่ดำเนินการตามคำขอในเซสชันนี้ในระหว่างเซสชันนี้ ไม่เป็นโมฆะ หนึ่งอาจสันนิษฐานว่าสิ่งนี้จะบ่งบอกถึงจำนวนหน้าอ่านจากดิสก์เพื่อตอบสนองการร้องขอที่ออกโดยเซสชั่นนี้ตั้งแต่เริ่มต้นของเซสชั่น นี่คือสมมติฐานที่ฉันคิดว่าฉันจะทดสอบ logical_readsคอลัมน์ในตารางเดียวกันกับที่มีการกำหนดเป็น: จำนวนการอ่านโลจิคัลที่ดำเนินการบนเซสชัน ไม่เป็นโมฆะ จากประสบการณ์ที่ใช้ SQL Server ผมเชื่อว่าคอลัมน์นี้สะท้อนให้เห็นถึงจำนวนของหน้าเว็บที่ได้รับการอ่านทั้งจากดิสก์และในหน่วยความจำ กล่าวอีกนัยหนึ่งจำนวนหน้าทั้งหมดที่เคยอ่านจากเซสชันไม่ว่าหน้านั้นจะอยู่ที่ใด ความแตกต่างหรือข้อเสนอคุณค่าของการมีสองคอลัมน์แยกต่างหากที่ให้ข้อมูลที่คล้ายกันดูเหมือนจะเป็นที่หนึ่งที่สามารถเข้าใจอัตราส่วนของหน้าอ่านจากดิสก์ ( reads) เทียบกับที่อ่านจากแคชแคช ( logical_reads) สำหรับเซสชั่นที่เฉพาะเจาะจง บนอุปกรณ์ทดสอบของฉันฉันได้สร้างฐานข้อมูลใหม่สร้างตารางเดียวที่มีจำนวนหน้าข้อมูลที่รู้จักแล้วอ่านตารางนั้นในเซสชันใหม่ จากนั้นฉันดูsys.dm_exec_sessionsเพื่อดูสิ่งที่readsและlogical_readsคอลัมน์พูดเกี่ยวกับเซสชัน ณ จุดนี้ฉันรู้สึกสับสนกับผลลัพธ์ บางทีบางคนที่นี่สามารถหลั่งน้ำตาให้ฉัน อุปกรณ์ทดสอบ: USE master; IF EXISTS (SELECT 1 FROM sys.databases d WHERE d.name = 'TestReads') BEGIN ALTER DATABASE …

2
ปรับปรุงคิวรีช้าลงหลังจากเปิดใช้งานดัชนีข้อความแบบเต็มของเซิร์ฟเวอร์ SQL
ฉันมีเว็บไซต์ asp.net ที่มีการแทรกอัปเดตและลบคิวรีที่เรียกใช้กับฐานข้อมูลของฉันมากมาย ไม่กี่วันที่ผ่านมาฉันสร้างดัชนีข้อความแบบเต็มในสองคอลัมน์ของหนึ่งในตาราง หลังจากนั้นฉันก็รู้ว่าเมื่อเว็บไซต์รันคิวรีการอัพเดตบนตารางนั้นการใช้หน่วยความจำและดิสก์ของกระบวนการเซิร์ฟเวอร์ SQL กำลังกระโดดและการอัปเดตช้าลง แบบสอบถามทำงานโดยไม่มีปัญหาประสิทธิภาพใด ๆ ก่อนสร้างดัชนีข้อความแบบเต็ม ฉันยังตระหนักว่าแบบสอบถามแบบใช้ปรับปรุงที่ง่ายมากมาก่อนตอนนี้มีความซับซ้อนเนื่องจากแผนการดำเนินการในขณะนี้มีสิ่งต่าง ๆ เช่นการปรับปรุงดัชนีข้อความแบบเต็ม นี่เป็นส่วนหนึ่งของแผนการดำเนินการใหม่ที่ซับซ้อนหลังจากเปิดใช้งานข้อความแบบเต็ม: ในบางชั่วโมงเมื่อฉันอัปเดตเนื้อหาของไซต์ฉันเรียกใช้คิวรีการอัปเดต 5,000 รายการและฉันคิดว่ากระบวนการจัดทำดัชนีข้อความแบบเต็มจะทำในแต่ละครั้งสำหรับแต่ละแถว ฉันควรจะปิดการใช้งานการสแกนข้อความเต็มในการเริ่มต้นของการปรับปรุงแถวและจากนั้นอีกครั้งเปิดใช้งานได้ (ในขณะที่คำถามที่เกี่ยวข้องนี้ )? ฉันสามารถบอกให้ SQL Server หยุดจัดทำดัชนีข้อความแบบเต็มเป็นเวลา 5 นาทีแล้วเริ่มสร้างดัชนีข้อมูลใหม่ได้หรือไม่ มีทางเลือกที่ดีกว่านี้อีกไหม? ฉันใช้ SQL Server 2012

3
กำหนดค่า RAM สำหรับ SQL Server และ NUMA
ผู้ดูแลฐานข้อมูลอุบัติเหตุที่นี่ คำถาม: คุณจะยังคง จำกัด RAM สูงสุดสำหรับ SQL Server ด้วยตนเองแม้ว่าจุดประสงค์เดียวของเซิร์ฟเวอร์นั้นคือเพื่อให้บริการโปรแกรมฐานข้อมูล SQL Server เท่านั้น ฉันมีเซิร์ฟเวอร์ Microsoft Windows 2012 R2, SQL Server 2012 Std, พร้อม 32GB RAM ผู้ดูแลระบบเข้าสู่ระบบ SQL Server อย่างต่อเนื่องเพื่อใช้คอนโซลและทั้งหมด ประการที่สองคุณจะตรวจสอบว่าเซิร์ฟเวอร์ Windows นี้เปิดใช้งาน NUMA ได้อย่างไร

2
PLE ต่ำใน NUMA โหนด 000 สูงถึง 001
ฉันกำลังดู PLE (Page Life Expectancy) ข้ามโหน NUMA บนเซิร์ฟเวอร์ SQL ของเราและพบว่ามีการกระจายค่อนข้างแปลก NUMA node 000 มี PLE ต่ำมากเมื่อเทียบกับ 001 ฉันไม่แน่ใจว่าทำไมจึงเป็นเช่นนี้ ฉันได้ตรวจสอบเซิร์ฟเวอร์ SQL อื่น ๆ หลายตัวในสภาพแวดล้อมของเราและเซิร์ฟเวอร์ที่ใช้งานจริงอื่นไม่มีลักษณะการทำงานนี้ ระบบกำลังเรียกใช้ SQL Server 2012 Enterprise Edition บน Dell m620 พร้อม 256GB Ram มันเป็นเครื่อง 2 ซ็อกเก็ต 6 คอร์ (เปิดใช้งาน HT) MAXDOP ถูกตั้งค่าไว้ที่ 6 โมดูลหน่วยความจำ AFAIK ได้รับการติดตั้งอย่างสม่ำเสมอทั่วทั้งหน่วยความจำของซีพียู มีบางอย่างบอกฉันว่า NUMA …

2
ฟิลด์“ นอกแถว” ถูกอ่านเมื่อใช้ดัชนีกลุ่มหรือไม่
ฉันรู้ว่าเมื่อVARCHAR(MAX)/NVARCHAR(MAX)มีการใช้คอลัมน์ข้อมูลจะถูกเก็บไว้out of the row- แถวข้อมูลจะมีตัวชี้ไปยังตำแหน่งอื่นที่จัดเก็บ 'ค่ามาก' ฉันมีคำถามต่อไปนี้: อยู่ในแต่ละเขตข้อมูลที่เก็บไว้out of the rowหรือเพียงmaxคน? หากคุณกำลังใช้clustered indexตารางเพื่ออ่านระเบียนทั้งหมดเขตข้อมูลที่เก็บอยู่นอกแถวจะถูกอ่านด้วยหรือไม่ VARCHAR (MAX) หรือ NVARCHAR (MAX) ถือเป็น 'ประเภทค่าขนาดใหญ่' ประเภทค่าขนาดใหญ่มักจะเก็บไว้ที่ 'ออกจากแถว' มันหมายความว่า ...

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

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