ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

2
แหล่งข้อมูลที่ดีสำหรับการเรียนรู้เกี่ยวกับฐานข้อมูลเอกสารคืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน4 เดือนที่ผ่านมา ฉันสนใจที่จะเรียนรู้เกี่ยวกับฐานข้อมูล NoSQL และฉันตัดสินใจเริ่มต้นด้วยฐานข้อมูลเชิงเอกสาร ทรัพยากรที่ดีในการเรียนรู้แนวคิดและการออกแบบที่ดีของฐานข้อมูลประเภทนี้คืออะไร?

3
คุณจะล้างแผนแบบสอบถามเก่าทั้งหมดจากภายใน Microsoft SQL Server ได้อย่างไร
เรามีแอพพลิเคชั่นชั้นวางที่ใช้ฐานข้อมูล Microsoft SQL ภายในแอปพลิเคชันนี้เราเลือกและเลือกเกณฑ์การเลือกที่หลากหลายสำหรับแต่ละรายงาน แอปพลิเคชันนี้เรียกใช้รายงานเหล่านี้ ฉันเชื่อว่าเรามีปัญหาแผนแบบสอบถาม รายงานฉบับแรกที่เราเรียกใช้ในแต่ละวันทำงานเร็วมาก 7 นาที รายงานใด ๆ ที่เราเรียกใช้หลังจากรายงานแรกใช้เวลาเกินหนึ่งชั่วโมง ทุกคืนเราเรียกใช้ภารกิจที่กำหนดเวลาไว้ซึ่งหยุดและเริ่ม SQL Server Agent และ SQL Server มีฐานข้อมูลอื่นประมาณ 25 ภายใน SQL อินสแตนซ์หนึ่งนี้ ไม่มีฐานข้อมูลอื่นที่มีปัญหาด้านประสิทธิภาพเพียงอย่างเดียวที่ออกผลิตภัณฑ์ชั้นวางที่ฉันกล่าวถึงก่อนหน้านี้ มีวิธีล้างแผนการสืบค้นทั้งหมดที่ SQL Server มีอยู่ในหน่วยความจำหรือไม่? ฉันจะทำสิ่งนี้ได้อย่างไรโดยไม่กระทบกับผู้ใช้ 30 รายหรือมากกว่านั้นที่ใช้ฐานข้อมูลอื่นบนเซิร์ฟเวอร์เดียวกัน

6
มีใครใช้โหมด sqlcmd ในทางปฏิบัติหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา SQLServer 2005 สิ่งที่เรียกว่าแนะนำ SQLCMD โหมด การเชื่อมโยง MSDN เมื่อมองแวบแรกโหมดนี้จะเพิ่มการชดเชยตัวแปรจากไฟล์แบตช์บรรทัดคำสั่งและบางคำสั่งที่หลบหนีไปยังคำสั่ง OS คุณสมบัตินี้ใช้ในสภาพแวดล้อมการผลิตหรือการทดสอบของคุณหรือไม่?

3
จะเปลี่ยนลำดับการยิงของ Triggers ได้อย่างไร?
จริงๆฉันไม่ค่อยใช้ทริกเกอร์ ดังนั้นฉันจึงพบปัญหาในครั้งแรก ฉันมีตารางจำนวนมากที่มีทริกเกอร์ (2 หรือมากกว่าสำหรับทุกตาราง) ฉันต้องการทราบและเปลี่ยนลำดับการเรียกทริกเกอร์สำหรับทุกตาราง เป็นไปได้หรือไม่ที่จะได้รับข้อมูลนี้? เพิ่ม: นี่คือบทความ enoght ที่ดีใน mssqltipsฉันได้พบ

1
ผลกระทบของการเปลี่ยนการตั้งค่าหน่วยความจำการสร้างดัชนีใน SQL Server คืออะไร
ฉันกำลังพยายามสร้างดัชนีบางตัวในฐานข้อมูล SQL Server 2008 แต่ได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ เกี่ยวกับข่าวสาร 8606 ระดับ 17 สถานะ 1 บรรทัด 1 การดำเนินการดัชนีนี้ต้องการหน่วยความจำ 1024 KB ต่อ DOP ความต้องการทั้งหมด 2048 KB สำหรับ DOP 2 นั้นมากกว่าค่า sp_configure ของชุด 704 KB สำหรับตัวเลือกการกำหนดค่าเซิร์ฟเวอร์ขั้นสูง "ดัชนีสร้างหน่วยความจำ (KB)" เพิ่มการตั้งค่านี้หรือลด DOP และเรียกใช้แบบสอบถามอีกครั้ง ขณะนี้การตั้งค่าหน่วยความจำการสร้างดัชนีถูกตั้งค่าเป็น 794KB และหน่วยความจำขั้นต่ำต่อแบบสอบถามตั้งเป็น 1024KB ผลกระทบของการเปลี่ยนแปลงค่าเหล่านี้คืออะไร? โดยเฉพาะอย่างยิ่งเกี่ยวกับประสิทธิภาพ ฉันควรเปลี่ยนพวกเขาสร้างดัชนีและเปลี่ยนกลับหรือฉันควรตั้งเป็น 0?

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

2
สั่งซื้อโดยใช้ลำดับความสำคัญที่กำหนดเองสำหรับคอลัมน์ข้อความ
นี่คือตารางตัวอย่าง: name | cat ---------- hugo | sal bob | mgr mike | dev jeff | mgr john | dev ทั้งสองnameและcatเป็น Varchar cat แสดงหมวดหมู่สำหรับชื่อเหล่านี้ แต่ฉันต้องการกำหนดลำดับความสำคัญให้กับพวกเขาตามด้วยข้อความค้นหาเพื่อแสดงรายการทั้งหมดเรียงลำดับตามลำดับความสำคัญนี้ วิธีใดบ้างที่เป็นไปได้? ฉันสามารถแยกcatตารางที่สองสร้าง foreign foreign และอื่น ๆ แต่เนื่องจากแอปของฉันนั้นง่ายมากและโครงสร้างอาจไม่สามารถเปลี่ยนแปลงได้: ฉันมีความเป็นไปได้อะไรบ้างในการmgrระบุชื่อก่อนตามด้วยdevชื่อตามด้วยsalชื่อ ?
12 oracle 

1
ประสิทธิภาพของ polymodels เมื่อเทียบกับรุ่น Bigtable ปกติใน Google App Engine คืออะไร
อะไรที่ให้ประสิทธิภาพที่ดีที่สุดในการใช้งาน Google App Engine ปกติ polymodel หรือรุ่น "Bigtable" ปกติ? polymodel สร้างคอลัมน์ในตารางพาเรนต์ที่เรียกว่า "class" ซึ่งให้การติดตามการสืบทอดได้อย่างมีประสิทธิภาพ ในขณะที่ Bigtable ปกติสืบทอดมาจากคลาสพาเรนต์สร้างโครงสร้างข้อมูลใหม่และแยกจากกันโดยไม่มีความสามารถในการสืบค้นพาเรนต์และค้นหาลูกทั้งหมดของคลาสย่อยทั้งหมด


5
มีเครื่องมือการเปรียบเทียบ MySQL หรือไม่ [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันได้ยินมานานแล้วว่ามีเครื่องมือนี้ที่ช่วยให้คุณทวีค่า mysql เพื่อประสิทธิภาพที่ดีขึ้น แต่ฉันไม่สามารถหามันได้เลย ฉันรู้ว่าฉันสามารถใช้ ab สำหรับ apache เพื่อจำลองการรับส่งข้อมูลสูงและมันจะสร้างบันทึกที่ช้า อย่างไรก็ตามหากเกิดปัญหา (เกิดขึ้นแล้วและอยู่ในโหมดการผลิต) ฉันไม่รู้ว่าทำไมจึงเกิดข้อขัดข้องและหากสามารถขัดข้องจากการกำหนดค่าได้

1
ฉันจะรู้ได้อย่างไรว่าอัลกอริธึมการแฮ็กข้อมูล SQL Server ที่ใช้ในการถอดรหัสข้อมูลที่เข้ารหัสเมื่อใช้ฟังก์ชัน DECRYPTBYPASSPHRASE
คำถามของฉันเกี่ยวข้องกับการทดสอบต่อไปนี้สองอินสแตนซ์: อินสแตนซ์ของ SQL Server 2017 Express (Microsoft SQL Server 2017 (RTM-CU16)) อินสแตนซ์ของ SQL Server 2014 Express (Microsoft SQL Server 2014 (SP2-CU18)) ผมใช้ฟังก์ชั่นENCRYPTBYPASSPHRASEการเข้ารหัสข้อความและใช้ผลตามที่ @ciphertext สำหรับDECRYPTBYPASSPHRASE ผลการทดสอบของฉันคือ: ตามนี้แก้ไขไมโครซอฟท์ , [... ] SQL Server 2017 ใช้อัลกอริทึมการแฮช SHA2 เพื่อแฮชรหัสผ่าน SQL Server 2016 และ SQL Server เวอร์ชันก่อนหน้าใช้อัลกอริทึม SHA1 ที่ไม่ถือว่าปลอดภัยอีกต่อไป แต่จะรู้ได้อย่างไรว่าอัลกอริทึมนั้นใช้ในการเข้ารหัสข้อมูลอย่างไรหากไม่มีข้อโต้แย้งเกี่ยวกับสิ่งนั้นในฟังก์ชัน DECRYPTBYPASSPHRASE มันเป็นส่วนหนึ่งของข้อมูลที่เข้ารหัสหรือไม่? จากผลการทดสอบของฉันฉันเดาว่า SQL Server …

1
หากคอลัมน์ VARCHAR (MAX) รวมอยู่ในดัชนีค่าทั้งหมดจะถูกเก็บไว้ในหน้าดัชนีหรือไม่?
ฉันขอสิ่งนี้ด้วยความอยากรู้อยากเห็นได้รับแรงบันดาลใจจากคำถามนี้ เรารู้ว่าVARCHAR(MAX)ค่าที่ยาวกว่า 8000 ไบต์จะไม่ถูกเก็บไว้ในแถว แต่ในหน้า LOB แยกต่างหาก หลังจากนั้นการดึงแถวที่มีค่าดังกล่าวจำเป็นต้องมีการดำเนินการ IO แบบตรรกะสองอย่างหรือมากกว่านั้น เราสามารถเพิ่มVARCHAR(MAX)คอลัมน์เป็นINCLUDEd ไปยังดัชนีที่ไม่ซ้ำกันดังที่แสดงในคำถามที่เชื่อมโยง หากคอลัมน์นี้มีค่าที่มีความยาวเกิน 8000 ไบต์ค่าดังกล่าวจะยังคงถูกเก็บไว้ "แบบอินไลน์" ในหน้าดัชนีใบหรือจะย้ายไปยังหน้า LOB หรือไม่

1
การสำรองข้อมูลตรวจพบความเสียหาย แต่ CHECKDB ไม่ได้
ฉันมีฐานข้อมูลที่เมื่อฉันรันคำสั่ง backup BACKUP DATABASE [MyDatabase] TO DISK = 'G:\Backup\MyDatabase_01_01_2018.bak' WITH NOFORMAT, NOSKIP, COMPRESSION, INIT, BUFFERCOUNT = 100 ฉันได้รับข้อความแสดงข้อผิดพลาด เกี่ยวกับ 3043 ระดับ 16 สถานะ 1 บรรทัด 8 สำรอง 'MyDatabase' ตรวจพบข้อผิดพลาดในหน้า (1: 745345) ในแฟ้ม 'F: \ Data \ MyDatabase_1.ndf' ข่าวสารเกี่ยวกับ 3013, ระดับ 16, สถานะ 1, ฐานข้อมูลการสำรอง8 บรรทัดถูกยกเลิกอย่างผิดปกติ ฉันใช้ CHECKDB เต็ม แต่กลับมาสะอาด ฉันสังเกตเห็นว่าตัวเลือก …

5
ฉันจะ จำกัด ขั้นตอนการจัดเก็บ SQL ที่จะเรียกใช้ครั้งละหนึ่งคนได้อย่างไร
ฉันมีขั้นตอนการจัดเก็บที่โดยทั่วไปจะเลือกค่าจากตารางหนึ่งและแทรกลงในอีกตารางหนึ่งซึ่งเป็นการจัดเก็บลงสื่อถาวร ฉันต้องการหลีกเลี่ยงคนหลายคนไม่ให้ทำเช่นนั้นในเวลาเดียวกัน ในขณะที่กระบวนการนี้กำลังทำงานอยู่ฉันไม่ต้องการให้คนอื่นเริ่มต้นได้ แต่ฉันไม่ต้องการให้มีการทำให้เป็นอนุกรม สิ่งที่ฉันต้องการสำหรับบุคคลอื่นที่พยายามเริ่มต้นเพื่อรับข้อผิดพลาดในขณะที่ฉันกำลังเรียกใช้กระบวนการ ฉันได้ลองใช้ sp_getapplock แล้ว แต่ฉันไม่สามารถจัดการเพื่อห้ามไม่ให้บุคคลนั้นเรียกใช้โพรซีเดอร์ได้ ฉันพยายามค้นหาโพรซีเดอร์ด้วย sys.dm_exec_requests และบล็อกโพรซีเดอร์ในขณะที่มันใช้งานได้ฉันคิดว่ามันไม่เหมาะสมเพราะในบางเซิร์ฟเวอร์ฉันไม่ได้รับอนุญาตให้เรียกใช้ sys.dm_exec_sql_text (sql_handle) วิธีที่ดีที่สุดสำหรับฉันที่จะทำคืออะไร?

4
มีฟังก์ชั่นในตัว (ซ่อนไว้) บน MS-SQL เพื่อยกเลิกการอ้างชื่อวัตถุหรือไม่?
บางครั้งฉันเก็บชื่อวัตถุ (ตัวระบุ) ในฐานข้อมูลของเราเช่นในตารางพารามิเตอร์บางตัว เพราะผมเลือกระเบียนจากตารางเหล่านี้โดยใช้ '=' หรือ 'LIKE' ดำเนินการเปรียบเทียบผมจะต้องดูแลเพื่อเก็บชื่อเหล่านี้มักจะมีหรือไม่มีวงเล็บ IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = '[TABLE_NAME]'; หรือ IF EXISTS (SELECT 1 FROM MYTABLE WHERE OBJ_NAME = 'TABLE_NAME'; อย่างไรก็ตาม MS-SQL มีฟังก์ชั่นบางอย่างที่คุณสามารถใช้ชื่อวัตถุที่มีหรือไม่มีวงเล็บตัวอย่างเช่นฟังก์ชัน OBJECT_ID () ฉันได้ตั้งค่าตัวอย่างน้อยที่สุดในdbfiddle.uk CREATE TABLE TEST ( ID INT IDENTITY(1,1) PRIMARY KEY, OBJECT sysname NOT NULL ); GO …
12 sql-server  t-sql 

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