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

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

2
มีความแตกต่างที่มีตัวตนระหว่างดัชนีคลัสเตอร์ที่ไม่ซ้ำกันและคีย์หลักที่คลัสเตอร์หรือไม่
ฉันเข้าใจว่าอาจมีความแตกต่างในความหมายหรือเจตนาระหว่างทั้งสอง แต่มีความแตกต่างด้านพฤติกรรมหรือประสิทธิภาพระหว่างคีย์หลักที่คลัสเตอร์และดัชนีที่ไม่ซ้ำกันหรือไม่

4
มีประโยชน์ใด ๆ ของคีย์หลักที่ประกอบด้วยคอลัมน์ทั้งหมดของตารางหรือไม่
ฉันมีตารางที่มีสี่คอลัมน์ที่ไม่เป็นโมฆะและข้อมูลเป็นเช่นนั้นทั้งสี่จำเป็นต้องแยกแยะระเบียนที่ไม่ซ้ำกัน หมายความว่าถ้าฉันจะสร้างคีย์หลักมันจะต้องประกอบด้วยคอลัมน์ทั้งหมด การค้นหาเทียบกับตารางเกือบทุกครั้งที่จะดึงระเบียนเดียวเช่นคอลัมน์ทั้งหมดจะถูกกรองในแบบสอบถาม เนื่องจากทุกคอลัมน์จะต้องทำการค้นหาการมีคีย์หลักมีประโยชน์กับฉันหรือไม่ (นอกจากบังคับให้มีการบันทึกที่ไม่ซ้ำกัน)?

3
อัปเดตช้าในตารางขนาดใหญ่พร้อมแบบสอบถามย่อย
เมื่อSourceTableมีระเบียน> 15MM และBad_Phraseมีระเบียน> 3K แบบสอบถามต่อไปนี้จะใช้เวลาเกือบ 10 ชั่วโมงในการเรียกใช้บน SQL Server 2005 SP4 UPDATE [SourceTable] SET Bad_Count= ( SELECT COUNT(*) FROM Bad_Phrase WHERE [SourceTable].Name like '%'+Bad_Phrase.PHRASE+'%' ) ในภาษาอังกฤษคำนี้คือการนับจำนวนของวลีที่แตกต่างกันการระบุไว้ใน Bad_Phrase ที่มี substring ของสนามNameในแล้ววางผลว่าในสนามSourceTableBad_Count ฉันต้องการคำแนะนำเกี่ยวกับวิธีทำให้แบบสอบถามนี้ทำงานได้เร็วขึ้นอย่างมาก

1
ASYNC_NETWORK_IO รอพิมพ์อะไรที่กังวลหรือไม่
ในการดูรายการของโพรซีเดอร์ที่เก็บไว้ซึ่งใช้เวลาในการประมวลผลนานจะมีความโดดเด่นที่ทำให้เกิดการรอคอยมากที่สุด อย่างไรก็ตามการรอนั้นส่วนใหญ่ (81%) เป็น ASYNC_NETWORK_IO และฉันรู้ว่าทำไม: กระบวนการที่เก็บไว้จะถ่ายโอนข้อมูลประมาณ 400 MB ในเอกสารอธิบายว่าสาเหตุของ ASYNC_NETWORK_IO คือไคลเอ็นต์ไม่สามารถตามกระแสข้อมูลได้และนั่นอาจเป็นจริง ฉันไม่แน่ใจว่าจะทำให้ลูกค้าติดตามได้อย่างไรเพราะมันคือการเรียกโพรซีเดอร์ที่เก็บไว้ผ่าน ADO.NET และเพียงแค่ประมวลผลชุดข้อมูล เมื่อได้รับข้อมูลนี้ฉันควรกังวลเกี่ยวกับประเภทรอ ASYNC_NETWORK_IO สำหรับกระบวนการนี้หรือไม่? จริง ๆ แล้วมันมีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่ ข้อมูลเพิ่มเติม: ฉันใช้ Service Pack 2 ของ SQL Server 2005 แอปไคลเอ็นต์อยู่ในกล่องเดียวกับ SQL Server (ฉันรู้ว่าฉันรู้ ... แต่ฉันไม่สามารถทำอะไรกับมันได้)

4
วิธีหยุดการประมวลผลสคริปต์ SQL
ฉันกำลังทำงานกับสคริปต์ sql และฉันต้องการหยุดสคริปต์ต่อไปหากเงื่อนไขบางอย่างไม่เป็นที่พอใจ เมื่อฉันเป็น Google ฉันพบว่า RaisError ที่มีระดับความรุนแรง 20 ระดับจะยุติการใช้งาน แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถใช้ตัวเลือกนั้น โปรดบอกฉันว่ามีทางเลือกอะไรบ้างที่จะหยุดการประมวลผลสคริปต์ SQL

2
การปิด WAITFOR ที่ไม่ จำกัด เพิ่มขนาดไฟล์บันทึกหรือไม่
ในแอปรุ่นล่าสุดของฉันฉันเพิ่มคำสั่งที่บอกให้รอเมื่อมีบางสิ่งเข้ามาในคิว Service Broker: WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue) DBA บอกฉันว่าตั้งแต่การเพิ่มขนาดบันทึกได้ผ่านหลังคา สิ่งนี้ถูกต้องไหม หรือฉันควรจะมองหาที่อื่น?

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

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

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

1
ความเสียหายประเภทใดที่ DBCC CheckDB พลาด
คำถามนี้ได้รับแจ้งจากโพสต์ก่อนหน้านี้และมีฐานข้อมูลของฉันถูกเก็บไว้สำหรับการตรวจสอบในอนาคตที่ถูกเรียกคืนต่อไปนี้: BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file ’BrokenDatabase.mdf'. Error: 3043, Severity: 16, State: 1. ในคำถามที่เชื่อมโยงและการสำรองข้อมูลฉันมีความพร้อมสำหรับการตรวจสอบหน้า DBCC, CHECKDB DBCC ผ่านไปโดยไม่มีข้อผิดพลาด แต่ความเสียหายปรากฏชัด ความเสียหายประเภทใดที่สามารถเกิดขึ้นได้โดย CHECKDB จะผ่านไป แต่การสำรองข้อมูลด้วยเช็คจะล้มเหลว

1
จำเป็นต้องรวมคอลัมน์ดัชนีคลัสเตอร์ในดัชนีที่ไม่ใช่คลัสเตอร์หรือไม่
เมื่อพิจารณาว่าดัชนีที่ไม่ได้ทำคลัสเตอร์นั้นเป็นไปตามดัชนีคลัสเตอร์ที่จำเป็นสำหรับดัชนีที่ไม่ทำคลัสเตอร์เพื่อแสดงรายการคอลัมน์ใด ๆ ที่มีอยู่ในดัชนีคลัสเตอร์หรือไม่ กล่าวอีกนัยหนึ่งถ้าตารางผลิตภัณฑ์มีดัชนีคลัสเตอร์บน ProductID เมื่อสร้างดัชนีที่ไม่ใช่คลัสเตอร์ซึ่งจะแนะนำให้รวมคอลัมน์ ProductID จำเป็นต้องเพิ่มอย่างไรก็ตามเป็นคอลัมน์หรือไม่? ถ้าไม่มีมีสถานการณ์ที่จะเป็นการดีที่จะเพิ่มชื่อคอลัมน์ไปยังดัชนีที่ไม่ใช่คลัสเตอร์หรือไม่

3
การลดขนาดบันทึกการทำธุรกรรมตกลงเพื่อทำบนฐานข้อมูลจริงหรือไม่?
ใน Microsoft SQL Server 2005 ตกลงเพื่อลดขนาดไฟล์บันทึกของฐานข้อมูลออนไลน์หรือไม่หรือจะทำให้การบริการหยุดชะงักหรือไม่

2
ดูอย่างรวดเร็วว่ามีการจัดสรร RAM ไปยัง SQL Server เท่าใด
ด้วย SQL Server 2005 คุณสามารถดูที่ Task Manager และอย่างน้อยให้ดูคร่าวๆว่าหน่วยความจำจัดสรรให้กับ SQL Server เท่าใด ด้วย SQL Server 2008 ชุดการทำงานหรือขนาดการส่งมอบจะไม่สูงเกินกว่า 500 MB แม้ว่า SQLServer: ตัวนับหน่วยความจำ / เซิร์ฟเวอร์รวมหน่วยความจำเซิร์ฟเวอร์ (KB) จะแสดงสถานะ 16,732,760 มีการตั้งค่าที่จะแสดงหน่วยความจำเซิร์ฟเวอร์จริง ๆ ใน Task Manager หรือไม่? หรือเป็นผลมาจากพวกเขาเปลี่ยนวิธีการใช้หน่วยความจำใน SQL Server

1
มีเหตุผลที่ฉันไม่ควรตั้งเจ้าของ db เป็น [sa] หรือไม่?
เมื่อวานนี้ฉันถามคำถามนี้เกี่ยวกับการเปลี่ยน dbo ของหลายฐานข้อมูลที่ฉันมี การเปลี่ยนแปลงนั้นสมเหตุสมผล แต่ฉันต้องการชัดเจน มีเหตุผลหรือสถานการณ์ที่ดีว่าทำไมฉันไม่ควรตั้งค่า dbo ของฐานข้อมูลเป็น [sa]?

2
ชนิดข้อมูลสำหรับเก็บอาร์เรย์ของแฟล็ก (อาเรย์บิตแมป / บิต)
ฉันต้องการจัดเก็บบิตอาร์เรย์สำหรับแต่ละระเบียนของตารางสนับสนุนการดำเนินการต่อไปนี้: ทดสอบว่าตั้งบิตไว้หรือไม่และตั้งค่าบิต (โดยใช้ SQL) การสืบค้นและการตั้งค่าโดยใช้ ADO 2.8 (ไม่ใช่ ADO.NET) การจัดทำดัชนี (เพื่อรับประโยชน์จากคุณสมบัติ "ครอบคลุมดัชนี") จำนวนสูงสุดของบิตจะถูกเก็บไว้ในอาร์เรย์นี้ได้รับการแก้ไขแต่อาจเกิน 32 นั่นคือคอลัมน์intแบบง่าย ๆไม่ได้ผลเสมอไป จากสิ่งที่ฉันเห็นมาจนถึงตอนนี้ตัวเลือกของฉันคือ: ใช้คอลัมน์intหลายรายการ ใช้bigint (ทำงานตราบเท่าที่จำนวนบิตคือ <= 64) ใช้เลขฐานสอง ? ตัวเลือกแรกจะใช้งานได้ แต่ต้องการการรีแฟคเตอร์เล็กน้อยในรหัสที่เข้าถึงข้อมูล ตัวเลือกที่สองเป็นการผ่อนปรนชั่วคราวเท่านั้นและจากการค้นหาของฉันจนถึงตอนนี้ฉันไม่แน่ใจว่า ADO ทำงานได้ดีกับbigintหรือไม่ ฉันไม่มีประสบการณ์กับไบนารีและฉันไม่ได้ตระหนักถึงตัวเลือกอื่น ๆ คุณต้องการเลือกชนิดข้อมูลแบบใดตามข้อกำหนด

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