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

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

2
ขนาด varchar มีความสำคัญในตารางชั่วคราวหรือไม่?
มีการถกเถียงกันว่างานของภรรยาผมเกี่ยวกับเพียงแค่ใช้varchar(255)กับทุกvarcharสาขาในตารางชั่วคราวในขั้นตอนการจัดเก็บ โดยพื้นฐานแล้วค่ายหนึ่งต้องการใช้ 255 เพราะจะใช้ได้ตลอดแม้ว่าการเปลี่ยนแปลงคำจำกัดความและค่ายอื่นต้องการติดกับขนาดในตารางต้นฉบับเพื่อปรับปรุงประสิทธิภาพที่เป็นไปได้ ค่ายแสดงถูกต้องหรือไม่? มีความหมายอื่นหรือไม่? พวกเขากำลังใช้ SQL Server

3
ขนาดหน่วยการจัดสรร SQL Server NTFS
ใน Windows 2008 R2 ที่เรียกใช้ SQL Server 2008 R2 วิธีที่สำคัญคือขนาดของหน่วยการจัดสรร NTFS ในประสิทธิภาพของ DISK IO สำหรับฉันแล้วผู้ดูแลเซิร์ฟเวอร์ที่สร้างเซิร์ฟเวอร์ไม่กี่แห่งสำหรับแอปที่มีภารกิจสำคัญเหลือขนาดหน่วยการจัดสรร NTFS (ขนาดคลัสเตอร์) ไปเป็นค่าเริ่มต้น 4 KB แทนที่จะเป็น 64 KB ติดตั้งเซิร์ฟเวอร์ SQL แล้ว การถอนการติดตั้ง SQL - ฟอร์แมตไดรฟ์ที่มีขนาดคลัสเตอร์ 64 KB และติดตั้งเซิร์ฟเวอร์ SQL ใหม่หรือไม่

3
มีประโยชน์ใด ๆ ในการจัดเรียงข้อมูลดัชนี SQL ในสภาพแวดล้อม SAN หรือไม่?
เซิร์ฟเวอร์ SQL ของเราใช้งาน SAN มันมีฐานข้อมูล OLTP หลายสิบบางตัวมีหลายตารางที่มีมากกว่า 1m บันทึก เรารันสคริปต์บำรุงรักษาดัชนีของ Ola Hallengrenทุกสัปดาห์และทำงานเป็นเวลาหลายชั่วโมงในแต่ละครั้ง ขึ้นอยู่กับเกณฑ์การกระจายตัวของสคริปต์จะจัดระเบียบใหม่หรือดัชนีดัชนีใหม่ เราสังเกตว่าในระหว่างการทำดัชนีใหม่ไฟล์บันทึกจะมีขนาดใหญ่ซึ่งนำไปสู่การสิ้นเปลืองแบนด์วิธที่มากเกินไปในระหว่างการจัดส่งบันทึก จากนั้นบทความจาก Brent Ozar ซึ่งเขาบอกว่าจะหยุดกังวลเกี่ยวกับดัชนี SQL : ฮาร์ดไดรฟ์ของคุณแชร์กับเซิร์ฟเวอร์อื่น ๆ ที่กำลังส่งคำขอไดรฟ์ในเวลาเดียวกันดังนั้นไดรฟ์จะกระโดดไปทั่วเพื่อรับข้อมูล การดีแฟรกดัชนีของคุณเป็นงานยุ่งที่ไร้ความหมาย Googling คำถามนี้นำไปสู่ความคิดเห็นที่แตกต่างกันส่วนใหญ่สนับสนุนด้วยการขัดแย้งที่ดูเหมือนสั้นหรืออ่อนแอเกินไป แผนเบื้องต้นของเราคือการปรับเปลี่ยนเกณฑ์การแตกแฟรกเมนต์ในสคริปต์การบำรุงรักษาของเราเพื่อให้การจัดระเบียบใหม่บ่อยกว่าการจัดทำดัชนีใหม่ คำตัดสินสุดท้ายคืออะไร? มันคุ้มค่าหรือไม่ที่จะจัดเรียงดัชนี SQL บน SAN โดยพิจารณาภาระที่เกี่ยวข้องกับการรันงานบำรุงรักษารายสัปดาห์

3
SQL Server LocalDB อินสแตนซ์; ข้อผิดพลาดในการกู้คืนข้อมูลสำรอง (MasterDBPath ไม่พร้อมใช้งาน)
ฉันมี SQL Local 2012 Local DB ติดตั้งอยู่และกำลังเชื่อมต่อกับมันผ่าน (localdb) \ v11.0 เมื่อพยายามกู้คืนไฟล์ข้อมูลสำรองฉันจะได้รับ: TITLE: Microsoft SQL Server Management Studio MasterDBPath คุณสมบัติไม่พร้อมใช้งานสำหรับข้อมูล 'Microsoft.SqlServer.Management.Smo.Information' คุณสมบัตินี้อาจไม่มีอยู่สำหรับวัตถุนี้หรืออาจไม่สามารถเรียกคืนได้เนื่องจากสิทธิ์การเข้าถึงไม่เพียงพอ (Microsoft.SqlServer.Smo) สำหรับความช่วยเหลือคลิก: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.2100.60+((SQL11_RTM).120210-1846+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates .PropertyCannotBeRetrievedExceptionText & EvtID = MasterDBPath & LinkId = 20476 ฉันได้ลองตั้งค่าสตริงของ MasterDBPath ใน: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer\CurrentVersion` แต่สิ่งนี้ไม่ได้ช่วย ใครมีความคิดบ้าง
16 sql-server 

2
SQL Server - วิธีปฏิบัติที่ดีที่สุดสำหรับการเติบโตของไฟล์ฐานข้อมูล
ฉันเฝ้าสังเกตการเติบโตของไฟล์ผ่านตัวรวบรวมข้อมูลใน sql server 2008 r2 เป็นเวลาสองสัปดาห์ ฐานข้อมูลมีการเติบโตอย่างต่อเนื่องที่ประมาณ 35 (MB) / วัน ฐานข้อมูลยังไม่ถึงขนาดเริ่มต้นที่ 2 GB การเติบโตอัตโนมัติของไฟล์ฐานข้อมูลถูกตั้งไว้ที่ 5MB และฉันต้องการลองวิธีอื่นดังนั้นฉันจึงกำลังมองหาคำแนะนำและหรือความคิดเห็น มีงานปรับแต่งที่ทำงานทุกสัปดาห์ในคืนวันอาทิตย์เวลา 1:30 น. ภารกิจจะ: ตรวจสอบความสมบูรณ์ของฐานข้อมูล ย่อขนาดแฟ้มบันทึก - (ไม่เป็นไรเนื่องจากโหมดการบันทึกเป็นแบบง่าย) ลดขนาดฐานข้อมูล จัดระเบียบดัชนีใหม่ สร้างดัชนีใหม่ อัปเดตสถิติ ล้างประวัติ ฉันต้องการเพิ่มอีกสองขั้นตอนในแผนการปรับรายสัปดาห์: ขยายไฟล์ฐานข้อมูลขึ้น 500 MB หากพื้นที่ที่ใช้จนถึงขีด จำกัด หรือขนาดทั้งหมด ขยายไฟล์บันทึกเพิ่มขึ้น 250 MB (หลังการย่อขนาด) หากพื้นที่ที่ใช้จนถึงขีด จำกัด ขนาดทั้งหมด ด้วยการวางภาระการเติบโตในเวลาออฟไลน์ฉันหวังว่าจะได้รับประสิทธิภาพโดยการลดจำนวนกิจกรรมการเติบโตอัตโนมัติในช่วงที่มีงานหนัก ฉันมีคำถามสองข้อเกี่ยวกับไฟล์ที่กำลังเติบโตอัตโนมัติ สถานที่ที่ดีที่สุดที่จะนำขั้นตอนการเติบโตของไฟล์มาไว้ก่อนหน้าขั้นตอนปัจจุบันหรือหลังจากนั้น หากฉันใช้ALTER DATABASE|MODIFY FILEเพื่อขยายไฟล์ฉันจะทราบได้SpaceUsedInFile …

2
ฉันสามารถคืนค่าไฟล์. bak ของ SQL Server ที่ไม่มี SQL Server ได้หรือไม่
ฉันมี.bakไฟล์ขนาดใหญ่จากการถ่ายโอนข้อมูล SQL Server 2005 ฉันสามารถกู้คืนสิ่งเหล่านี้ได้โดยไม่ต้องใช้ SQL Server ไม่ว่าจะเป็น PostgreSQL, MySQL หรือไฟล์แบบข้อความ โซลูชันโอเพนซอร์สจะมีประโยชน์มากที่สุด

2
เครื่องมือข้อมูล SQL Server และฟังก์ชั่นพาร์ติชัน
ฉันกำลังสร้างสถานการณ์การโหลดหน้าต่างบานเลื่อนและฟังก์ชันพาร์ติชันจะเปลี่ยนขอบเขตตลอดเวลา ฉันได้สร้างฟังก์ชั่นพาร์ติชั่นบางตัวในโครงการฐานข้อมูล SQL Server Data Tools (SSDT) ​​ที่มีขอบเขตเริ่มต้นบางอย่างฮาร์ดโค้ดไว้ อย่างไรก็ตามเมื่อเวลาผ่านไปและการเปลี่ยนแปลงขอบเขตของฟังก์ชั่นพาร์ติชั่นฐานข้อมูล SSDT ในอนาคตจะเผยแพร่กลับไปเป็นขอบเขตดั้งเดิม มีวิธีการจัดการสถานการณ์นี้อย่างสง่างามอาจปิดการใช้งานการเผยแพร่ฟังก์ชั่นพาร์ทิชันหรือไม่ ฉันได้ลองเปลี่ยนคุณสมบัติBuild Actionของฟังก์ชั่นพาร์ติชันใน SSDT จากค่าเริ่มต้นBuildเป็นNoneแต่แล้วโครงการล้มเหลวในการสร้างเนื่องจากการอ้างอิงที่ขาดหายไปในวัตถุที่ขึ้นกับ
16 sql-server 


1
ความแตกต่างของอนุสาวรีย์ในเวลาดำเนินการระหว่างแบบสอบถามเมื่อใช้คำใบ้แบบสอบถาม RECOMPILE
ฉันมีแบบสอบถามที่เหมือนกันเกือบสองรายการที่ทำงานบนอินสแตนซ์ SQL Server 2005 เดียวกัน: อันแรกคือSELECTเคียวรีดั้งเดิมตามที่สร้างโดย LINQ (ฉันรู้ว่าฉันรู้ ... ฉันไม่ใช่นักพัฒนาแอปพลิเคชันเพียง DBA :) คนที่สองเหมือนกันกับคนแรกที่เพิ่มOPTION (RECOMPILE)ในตอนท้าย ไม่มีอะไรเปลี่ยนแปลง คนแรกใช้เวลา 55 วินาทีทุกครั้งที่วิ่ง คนที่สองใช้เวลา 2 วินาที ชุดผลลัพธ์ทั้งคู่เหมือนกัน ทำไมคำใบ้นี้ทำให้เกิดประสิทธิภาพที่เพิ่มขึ้นอย่างมาก? รายการหนังสือออนไลน์บนRECOMPILEไม่มีคำอธิบายโดยละเอียดมาก: สั่งให้โปรแกรมฐานข้อมูลเซิร์ฟเวอร์ SQL เพื่อยกเลิกแผนที่สร้างขึ้นสำหรับแบบสอบถามหลังจากที่ดำเนินการบังคับให้เครื่องมือเพิ่มประสิทธิภาพแบบสอบถามเพื่อรวบรวมแผนแบบสอบถามอีกครั้งในครั้งถัดไปที่ดำเนินการแบบสอบถามเดียวกัน โดยไม่ต้องระบุ RECOMPILE เครื่องมือฐานข้อมูลจะเก็บแผนแบบสอบถามและนำมาใช้ใหม่ เมื่อรวบรวมแผนแบบสอบถามคำแนะนำแบบสอบถาม RECOMPILE ใช้ค่าปัจจุบันของตัวแปรท้องถิ่นใด ๆ ในแบบสอบถามและหากแบบสอบถามอยู่ภายในกระบวนงานที่เก็บไว้ค่าปัจจุบันจะถูกส่งไปยังพารามิเตอร์ใด ๆ RECOMPILE เป็นทางเลือกที่มีประโยชน์ในการสร้างโพรซีเดอร์ที่เก็บไว้ซึ่งใช้ส่วนคำสั่ง WITH RECOMPILE เมื่อมีคิวรีย่อยของเคียวรีภายในโพรซีเดอร์ที่เก็บไว้เท่านั้นแทนที่จะต้องคอมไพล์ที่เก็บไว้ทั้งหมด สำหรับข้อมูลเพิ่มเติมโปรดดูการคอมไพล์ใหม่ของกระบวนงานที่เก็บไว้ RECOMPILE ยังมีประโยชน์เมื่อคุณสร้างแผนที่นำทาง สำหรับข้อมูลเพิ่มเติมดูการปรับการค้นหาในแอปพลิเคชันที่ปรับใช้โดยใช้คำแนะนำแผน เนื่องจากแบบสอบถามของฉันมีตัวแปรในเครื่องจำนวนมากฉันเดาว่า SQL Server สามารถปรับให้เหมาะสม (อย่างจริงจัง) …

5
ทดสอบว่าคอลัมน์ใด ๆ เป็น NULL
ฉันพยายามที่จะคิดออกแบบสอบถามง่าย ๆ ที่ฉันสามารถทำได้เพื่อทดสอบว่าตารางขนาดใหญ่มีรายการของรายการที่มีค่าว่างอย่างน้อยหนึ่ง (NULL / เปล่า) ในคอลัมน์ใด ๆ ฉันต้องการบางสิ่งบางอย่าง SELECT * FROM table AS t WHERE ANY(t.* IS NULL) ฉันไม่ต้องการที่จะทำ SELECT * FROM table AS t WHERE t.c1 = NULL OR t.c2 = NULL OR t.c3 = NULL นี่จะเป็นข้อความค้นหาขนาดใหญ่

2
สร้างมุมมองในฐานข้อมูลที่ระบุด้วย SQL แบบไดนามิก?
ฉันกำลังเขียน sql แบบไดนามิกเพื่อวางและสร้างมุมมองในฐานข้อมูลอื่น ดังนั้นฉันจึงเขียนว่า: set @CreateViewStatement = ' USE ['+ @DB +']; CREATE VIEW [dbo].[MyTable] AS SELECT ........something exec (@CreateViewStatement) มันทำให้ฉันมีข้อผิดพลาด: 'สร้างมุมมอง' ต้องเป็นคำสั่งแรกในชุดการสืบค้น ถ้าฉันลบคำสั่ง USE DATABASE มันใช้งานได้ดี แต่ฐานข้อมูลไม่ได้ระบุอีกต่อไป .... ฉันจะแก้ปัญหานี้ได้อย่างไร

2
วิธีที่มีประสิทธิภาพมากที่สุดในการรับช่วงวันที่
วิธีที่มีประสิทธิภาพมากที่สุดในการดึงข้อมูลช่วงวันที่ด้วยโครงสร้างตารางเป็นอย่างไร create table SomeDateTable ( id int identity(1, 1) not null, StartDate datetime not null, EndDate datetime not null ) go สมมติว่าคุณต้องการช่วงสำหรับทั้งสองและStartDate EndDateดังนั้นในคำอื่น ๆ ถ้าStartDateตกอยู่ในระหว่าง@StartDateBeginและ@StartDateEndและEndDateตกอยู่ในระหว่าง@EndDateBeginและ@EndDateEndแล้วทำบางสิ่งบางอย่าง ฉันรู้ว่ามีสองสามวิธีที่จะไปเกี่ยวกับเรื่องนี้ แต่สิ่งที่แนะนำมากที่สุดคืออะไร?

4
SQL Server 2005/2008 UTF-8 Collation / Charset
ฉันไม่สามารถค้นหาตัวเลือกโดยตรงเพื่อตั้งค่าการUTF-8รวมCollations/Charsetsใน SQL Server 2005/2008 เช่นเดียวกับที่เป็นไปได้ในการตั้งค่าในเอ็นจิน SQL อื่น แต่ใน SQL Server 2005/2008 มีการเปรียบเทียบละตินและ SQL เท่านั้น มีตัวเลือกในการบังคับ / ติดตั้ง collations / charsets เหล่านี้ในเอ็นจิน SQL Server (สำหรับทั้งสองเวอร์ชัน) 2005/2008 บน Win2008 OS

7
การออกแบบตารางแบบใดที่เหมาะกับประสิทธิภาพมากที่สุด
ฉันถูกขอให้สร้างบางสิ่งบางอย่างซึ่งติดตามค่าใช้จ่ายรายวันเพื่อรวบรวมในบัญชีและฉันกำลังพยายามหาสคีมาตารางฐานข้อมูลที่จะสนับสนุนสิ่งนี้ นี่คือสิ่งที่ฉันรู้ บริษัท มีบัญชีมากกว่า 2.5 ล้านบัญชี ในบรรดาเหล่านี้พวกเขาทำงานเฉลี่ย 200,000 ต่อเดือน (การเปลี่ยนแปลงที่มีระดับพนักงานซึ่งปัจจุบันอยู่ในระดับต่ำ) พวกเขามีประเภทค่าใช้จ่ายที่แตกต่างกัน 13 แบบที่พวกเขาต้องการติดตามและพวกเขาได้เตือนว่าพวกเขาอาจเพิ่มมากขึ้นในอนาคต พวกเขาต้องการค่าใช้จ่ายในการติดตามรายวัน ค่าใช้จ่ายจะไม่แยกระหว่างสินค้าคงคลังทั้งหมด พวกเขาจะแยกตาม # ของบัญชีที่ทำงานต่อเดือน (200,000) หรือผู้ใช้สามารถป้อนตัวระบุบัญชีเพื่อใช้ค่าใช้จ่ายกับกลุ่มบัญชีหรือพวกเขาสามารถระบุบัญชีที่จะใช้ค่าใช้จ่าย ความคิดแรกของฉันคือฐานข้อมูลปกติ: หมายเลขบัญชี วันที่ CostTypeId จำนวน ปัญหาของฉันคือสิ่งนี้ทำคณิตศาสตร์ ตารางนี้จะใหญ่ขึ้นอย่างรวดเร็ว สมมติว่ามีการคิดค่าใช้จ่ายทั้งหมด 13 ประเภทสำหรับบัญชีที่ทำงานทั้งหมดสำหรับเดือนปัจจุบันนั่น200k * 13 * N days in monthคือที่ ๆ ประมาณ 75-80 ล้านระเบียนต่อเดือนหรือใกล้เคียงกับหนึ่งพันล้านรายการต่อปี ความคิดที่สองของฉันคือการทำให้เป็นปกติเล็กน้อย หมายเลขบัญชี วันที่ ค่าใช้จ่ายทั้งหมด CostType1 CostType2 CostType3 CostType4 CostType5 …

1
ใครบ้างมีคำแนะนำที่ดีสำหรับหนังสือที่สอนการใช้เศษกระดาษ?
ไม่มีใครมีคำแนะนำที่ดีสำหรับหนังสือที่สอนdb sharding (ตั้งแต่เริ่มต้นจนสุด) ฉันได้อ่านเหมือน 40 เว็บไซต์ที่แตกต่างกันพูดคุยเกี่ยวกับเศษ ฉันไม่ได้บอกว่าเว็บไซต์ / บล็อกออนไลน์มีหมัดพวกเขาเป็น titbits ที่ดี อย่างไรก็ตามฉันต้องการอาหารหลักไม่ใช่แค่ข้อมูลที่เป็นประโยชน์ที่นี่และที่นั่น โดยพื้นฐานแล้วฉันมีความคิด (ฉันเดา) เกี่ยวกับวิธีการใช้การแบ่งส่วน แต่เนื่องจากเป็นแนวคิดที่ซับซ้อนมากฉันเชื่อว่ามีมากขึ้นมากไปกว่าที่สามารถศึกษาได้
16 mysql  sql-server 

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