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

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

3
แนวคิดของดัชนีคลัสเตอร์ในการออกแบบ DB มีความหมายเมื่อใช้ SSD หรือไม่
เมื่อออกแบบ SQL data data schema ของเซิร์ฟเวอร์และเคียวรีที่ตามมา, sprocs, views, ฯลฯ แนวคิดของดัชนีคลัสเตอร์และลำดับของข้อมูลบนดิสก์มีเหตุผลหรือไม่ที่จะต้องพิจารณาการออกแบบ DB ที่ทำให้ติดตั้งบนแพลตฟอร์ม SSD อย่างชัดเจน ? http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx "ดัชนีคลัสเตอร์กำหนดลำดับทางกายภาพของข้อมูลในตาราง" บนแพลตฟอร์มดิสก์แบบฟิสิคัลการออกแบบเพื่อพิจารณาว่าเหมาะสมสำหรับฉันเมื่อสแกนฟิสิคัลข้อมูลเพื่อดึงแถว "เรียงตามลำดับ" อาจมีประสิทธิภาพมากกว่าการค้นหาในตาราง บนแพลตฟอร์ม SSD การเข้าถึงการอ่านข้อมูลทั้งหมดใช้การค้นหาที่เหมือนกัน ไม่มีแนวคิดของ "การสั่งซื้อทางกายภาพ" และการอ่านข้อมูลไม่ใช่ "ต่อเนื่อง" ในแง่ที่ว่าบิตถูกเก็บไว้ในซิลิคอนชิ้นเดียวกัน ดังนั้นในกระบวนการกำหนดฐานข้อมูลแอปพลิเคชันการพิจารณาดัชนีกลุ่มที่เกี่ยวข้องกับแพลตฟอร์มนี้คืออะไร? ความคิดเริ่มต้นของฉันคือว่าไม่ใช่เพราะแนวคิดของ "ข้อมูลที่สั่งซื้อ" ไม่ได้ใช้กับการจัดเก็บข้อมูล SSD และการค้นหา / การเพิ่มประสิทธิภาพการกู้คืน แก้ไข:ฉันรู้ว่า SQL Server จะสร้างหนึ่งฉันแค่ปรัชญาเกี่ยวกับว่ามันเหมาะสมที่จะคิดในระหว่างการออกแบบ / การเพิ่มประสิทธิภาพ

6
มีการ จำกัด จำนวนฐานข้อมูลที่คุณสามารถวางบนเซิร์ฟเวอร์ SQL เครื่องเดียวหรือไม่?
ฉันกำลังตั้งค่าระบบ SaaS ที่เราวางแผนที่จะให้ฐานข้อมูลลูกค้าของพวกเขาแต่ละคน ระบบได้รับการตั้งค่าไว้แล้วเพื่อให้เราสามารถขยายไปยังเซิร์ฟเวอร์เพิ่มเติมได้อย่างง่ายดายหากโหลดมากเกินไป เราหวังว่าจะมีลูกค้าเป็นพันหรือเป็นหมื่น คำถาม มีข้อ จำกัด ในทางปฏิบัติเกี่ยวกับจำนวนฐานข้อมูลขนาดเล็กที่คุณสามารถ / ควรมีใน SQL Server เดียวหรือไม่? มันมีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่ มันจะดีกว่าหรือถ้ามี 10,000 ฐานข้อมูลละ 100 MB หรือหนึ่งฐานข้อมูล 1 TB ข้อมูลเพิ่มเติม เมื่อฉันพูดว่า "ฐานข้อมูลไมโคร" ฉันไม่ได้หมายถึง "ไมโคร" ฉันแค่หมายถึงว่าเรากำลังตั้งเป้าให้ลูกค้าหลายพันรายดังนั้นแต่ละฐานข้อมูลจะเป็นหนึ่งในพันหรือน้อยกว่าของพื้นที่จัดเก็บข้อมูลทั้งหมด ในความเป็นจริงแต่ละฐานข้อมูลจะอยู่ที่ประมาณ 100MB โดยขึ้นอยู่กับจำนวนการใช้งานที่ได้รับ เหตุผลหลักในการใช้ 10,000 ฐานข้อมูลเพื่อความยืดหยุ่น ความจริงก็คือ V1 ของระบบมีฐานข้อมูลเดียวและเรามีช่วงเวลาที่อึดอัดเมื่อฐานข้อมูลกำลังถูกบีบให้โหลด มันกำลังทำให้เครียด CPU, หน่วยความจำ, I / O - ทั้งหมดข้างต้น แม้ว่าเราจะแก้ไขปัญหาเหล่านั้นพวกเขาก็ทำให้เราตระหนักว่าในบางจุดแม้จะมีการจัดทำดัชนีที่ดีที่สุดในโลกหากเราประสบความสำเร็จอย่างที่เราหวังว่าจะเป็นเราก็ไม่สามารถใส่ข้อมูลทั้งหมดของเราได้ ฐานข้อมูล ดังนั้นสำหรับ V2 …

9
ขอให้ไม่ใช้ธุรกรรมและใช้วิธีแก้ปัญหาเพื่อจำลองสถานการณ์หนึ่ง
ฉันได้พัฒนา T-SQL มาหลายปีแล้วและกำลังขุดอยู่เสมอและเรียนรู้ทุกอย่างที่เกี่ยวกับภาษาได้อย่างต่อเนื่อง ฉันเพิ่งเริ่มทำงานกับ บริษัท ใหม่และได้รับสิ่งที่ฉันคิดว่าเป็นข้อเสนอแนะแปลก ๆ เกี่ยวกับการทำธุรกรรม ไม่เคยใช้พวกเขา ใช้วิธีแก้ปัญหาที่จำลองธุรกรรมแทน นี่มาจาก DBA ของเราที่ทำงานในฐานข้อมูลเดียวกับธุรกรรมจำนวนมากและต่อมามีการบล็อกจำนวนมาก ฐานข้อมูลที่ฉันทำงานเป็นหลักไม่ประสบปัญหานี้และฉันเห็นว่ามีการใช้ธุรกรรมในอดีต ฉันเข้าใจว่าการปิดกั้นเป็นสิ่งที่คาดว่าจะเกิดขึ้นเนื่องจากเป็นไปตามปกติของพวกเขาและถ้าคุณสามารถหลีกเลี่ยงได้โดยไม่ต้องใช้สิ่งใดสิ่งหนึ่ง แต่ฉันมีหลายครั้งที่แต่ละคำสั่งต้องทำงานสำเร็จ หากล้มเหลวพวกเขาทั้งหมดจะต้องล้มเหลวในการกระทำ ฉันรักษาขอบเขตการทำธุรกรรมของฉันให้แคบที่สุดเสมอใช้ร่วมกับ SET XACT_ABORT ON เสมอและอยู่ในการทดลอง / จับ ตัวอย่าง: CREATE SCHEMA someschema; GO CREATE TABLE someschema.tableA (id INT NOT NULL IDENTITY(1, 1) PRIMARY KEY, ColA VARCHAR(10) NOT NULL ); GO CREATE TABLE someschema.tableB (id …

5
เมื่อใดที่ตกลงเพื่อลดขนาดฐานข้อมูล
ฉันรู้ว่าหดตัวเป็นปีศาจ: มันกลับคำสั่งหน้าและรับผิดชอบต่อโรคมะเร็งผิวหนัง, การกระจายตัวของข้อมูลและภาวะโลกร้อน รายการไปที่ ... ที่กล่าวว่าฉันมีฐานข้อมูล 100 GB และฉันลบข้อมูล 50 GB - ไม่ได้อยู่ในตารางเดียว แต่ pruning ทั่วไปของข้อมูลเก่าในระดับกว้างฐานข้อมูลครอบคลุม 90% ของ ตาราง - นี่เป็นกรณีการใช้งานที่เหมาะสมสำหรับลดขนาดฐานข้อมูลหรือไม่? หากไม่เป็นเช่นนั้นขั้นตอนที่เหมาะสมในการทำความสะอาดบ้านหลังจากลบข้อมูลที่มีเปอร์เซ็นต์สูงจากฐานข้อมูลคืออะไร ฉันสามารถนึกถึงสอง: สร้างดัชนีและอัปเดตสถิติใหม่ มีอะไรอีกบ้าง?

2
ทำสถิติการอัพเดตดัชนีใหม่หรือไม่?
ฉันได้ทำหลักสูตร MS10775A เมื่อสัปดาห์ที่แล้วและมีคำถามหนึ่งข้อที่ผู้ฝึกสอนไม่สามารถตอบได้อย่างน่าเชื่อถือคือ: ดัชนีใหม่อัปเดตสถิติหรือไม่ เราพบว่าการสนทนาออนไลน์โต้เถียงทั้งที่เป็นอยู่และไม่เป็นเช่นนั้น

5
การทำให้ข้อมูลสับสนใน SQL Server
แนวปฏิบัติที่ดีที่สุดสำหรับ Data Obfuscation ใน SQL Server คืออะไร เราต้องการใช้ข้อมูลการผลิตแบบสวมหน้ากากในระบบเอือดของเรา ถ้าเราต้องการที่จะทำมันอย่างรวดเร็วและด้วยระดับ obsfucation ที่สูงขึ้นวิธีการที่ควรจะนำมา? ฉันกำลังคิดเกี่ยวกับการแย่งชิงตัวละครสำหรับชื่อและนามสกุลของผู้คน แต่อย่างไร ฉันควรสร้างฟังก์ชั่นด้วยตัวเองหรือมีฟังก์ชั่นที่กำหนดไว้ล่วงหน้าให้ใช้งานหรือไม่? ฉันไม่ต้องการใช้เวลาคิดค้นวงล้อใหม่ :) แล้วฟิลด์วันที่ล่ะ? ตัวอย่างเช่นควรเลือกวันเดือนปีเกิดแบบสุ่มจากตารางทั้งหมดและมอบหมายให้บันทึกหรือมีวิธีที่ดีกว่าในการทำเช่นนั้น?

3
ฉันจะดูการกำหนดค่าจดหมายฐานข้อมูลปัจจุบันได้อย่างไร
อินสแตนซ์ SQL Server (2008) ของเราได้รับการกำหนดค่าให้ส่งเมลและทุกอย่างทำงานได้อย่างถูกต้อง แต่ฉันไม่สามารถหาวิธีดูการกำหนดค่าที่มีอยู่โดยเฉพาะเซิร์ฟเวอร์ SMTP จาก SSMS ฉันสามารถเริ่มต้นตัวช่วยสร้างการกำหนดค่าได้เท่านั้นและฉันไม่พบอะไรออนไลน์ - มีข้อมูลมากมายเกี่ยวกับวิธีการตั้งค่า แต่ไม่มีวิธีการดูการตั้งค่าปัจจุบัน ฉันจะดูการตั้งค่าที่มีอยู่ได้อย่างไร

2
เมื่อต้องการอัปเดตสถิติ
ฉันได้รับแผนการบำรุงรักษาที่ได้รับสิ่งต่อไปนี้: ล้างข้อมูลเก่า ตรวจสอบความสมบูรณ์ของฐานข้อมูล ดำเนินการสำรองฐานข้อมูลและบันทึกธุรกรรม จัดระเบียบดัชนีของเราใหม่ อัพเดทสถิติ ลบการสำรองข้อมูลเก่าและไฟล์ Maintenance Plan จากแผนการบำรุงรักษา 23 นาทีการอัปเดตสถิติใช้เวลา 13 นาที ในช่วงเวลา 13 นาทีนี้การเข้าถึงฐานข้อมูลถูกปิดกั้น (หรืออย่างน้อยการจำลองแบบจากฐานข้อมูลนี้ไปยังผู้อื่นของเราจะถูกหยุดชั่วคราว) คำถามของฉันคือ: เราควรอัปเดตสถิติเมื่อใดและเพราะเหตุใด ดูเหมือนว่าสิ่งที่เราควรทำน้อยกว่าทุกวัน ฉันพยายามที่จะพาเราออกจาก "เพียงเพราะ" ความตั้งใจของการบำรุงรักษาที่ไม่จำเป็น

5
ซ้อนกันดูการออกแบบฐานข้อมูลที่ดี?
ฉันได้อ่านนานมาแล้ว หนังสือระบุว่าเราไม่ควรอนุญาตให้มีมุมมองแบบซ้อนใน SQL Server ฉันไม่แน่ใจว่าทำไมเราไม่สามารถทำเช่นนั้นหรือฉันอาจจำคำสั่งที่ไม่ถูกต้อง นักเรียน SELECT studentID, first_name, last_name, SchoolID, ... FROM students CREATE VIEW vw_eligible_student AS SELECT * FROM students WHERE enroll_this_year = 1 ครู SELECT TeacherID, first_name, last_name, SchoolID, ... FROM teachers CREATE VIEW vw_eligible_teacher AS SELECT * FROM teachers WHERE HasCert = 1 AND enroll_this_year = …

8
ตัวเลือก * ยังคงไม่มีอะไรใหญ่โตใน SQL Server 2012 หรือไม่
ย้อนกลับไปในสมัยของปีกลายถือเป็นเรื่องใหญ่ที่ไม่ต้องทำselect * from tableหรือselect count(*) from tableเพราะการแสดงที่โด่งดัง ยังคงเป็นกรณีนี้ใน SQL Server รุ่นที่ใหม่กว่า (ฉันใช้ 2012 แต่ฉันเดาว่าคำถามจะใช้กับ 2008 - 2014) แก้ไข:เนื่องจากผู้คนดูเหมือนจะประณามฉันเล็กน้อยที่นี่ฉันจึงมองสิ่งนี้จากมุมมองของมาตรฐาน / ทางวิชาการไม่ว่าจะเป็นสิ่งที่ "ถูกต้อง" (ซึ่งแน่นอนว่ามันไม่ใช่)

5
ฉันสามารถเรียกใช้กระบวนงานที่เก็บไว้และส่งคืนได้ทันทีโดยไม่ต้องรอให้เสร็จหรือไม่
เรามีขั้นตอนการจัดเก็บที่ผู้ใช้สามารถเรียกใช้ด้วยตนเองเพื่อรับหมายเลขที่ปรับปรุงแล้วสำหรับรายงานที่ใช้อย่างต่อเนื่องตลอดทั้งวัน ฉันมีขั้นตอนการจัดเก็บที่สองที่ควรเรียกใช้หลังจากการเรียกใช้กระบวนงานที่เก็บไว้ครั้งแรกเนื่องจากเป็นไปตามหมายเลขที่ได้รับจากขั้นตอนการจัดเก็บครั้งแรกนี้ แต่ใช้เวลานานกว่าในการเรียกใช้และเป็นกระบวนการแยกต่างหาก ทำให้ผู้ใช้รอในขณะที่โพรซีเดอร์ที่เก็บไว้นี้ที่ 2 รัน มีวิธีให้โพรซีเดอร์ที่เก็บไว้หนึ่งโพรซีเดอร์เริ่มต้นโพรซีเดอร์ที่เก็บที่สองและส่งคืนทันทีโดยไม่รอผลลัพธ์หรือไม่? ฉันใช้ SQL Server 2005


3
คำนำหน้า N ก่อนสตริงในแบบสอบถาม Transact-SQL
คุณช่วยบอกฉันทีฉันควรใช้คำนำหน้า N ก่อนสตริงในแบบสอบถาม Transact-SQL? ฉันเริ่มทำงานกับฐานข้อมูลที่ฉันไม่ได้รับผลลัพธ์ใด ๆ โดยใช้แบบสอบถามเช่นนี้ SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%' N'%а_pattern%'จนกว่าฉันจะเปลี่ยนรูปแบบไป ฉันไม่เคยเพิ่มคำนำหน้านี้มาก่อนดังนั้นฉันอยากรู้ a_fieldถูกกำหนดให้เป็นnvarchar(255)แต่ฉันคิดว่าเหตุผลเป็นอย่างอื่น

10
ฉันจะคัดลอกตารางด้วย SELECT INTO ได้อย่างไร แต่ไม่สนใจคุณสมบัติตัวตน
ฉันมีตารางที่มีคอลัมน์ระบุตัวตน: create table with_id ( id int identity(1,1), val varchar(30) ); มันเป็นที่รู้จักกันดีว่าสิ่งนี้ select * into copy_from_with_id_1 from with_id; ผลลัพธ์ใน copy_from_with_id_1 พร้อมรหัสประจำตัวด้วย คำถามล้นสแต็คต่อไปนี้กล่าวถึงรายการคอลัมน์ทั้งหมดอย่างชัดเจน มาลองกัน select id, val into copy_from_with_id_2 from with_id; อ๊ะแม้ในกรณีนี้ id จะเป็นคอลัมน์ข้อมูลประจำตัว สิ่งที่ฉันต้องการคือโต๊ะ create table without_id ( id int, val varchar(30) );

2
ใน SQL Server 2016 ความแตกต่างระหว่าง Always Encrypted และ Transparent Data Encryption แตกต่างกันอย่างไร
ขณะที่ฉันเขียนสิ่งนี้ฉันยังคงรอการเปิดตัวอย่างเป็นทางการของ SQL Server 2016 เพื่อให้เราสามารถสำรวจประโยชน์ของคุณสมบัติ "เข้ารหัสเสมอ" ฉันแค่อยากจะรู้ว่าความแตกต่างที่เฉพาะเจาะจงจะอยู่ระหว่างการเข้ารหัสเสมอและการเข้ารหัสข้อมูลแบบโปร่งใสที่มีอยู่ในปัจจุบันใน SQL Server 2016 เพื่อให้เราสามารถตัดสินใจได้อย่างถูกต้องสำหรับโครงการในอนาคต

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