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

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

9
ฉันจะลดความเสี่ยงในการแก้ไขฐานข้อมูลผิดโดยไม่ตั้งใจได้อย่างไร
ฉันเพิ่งเรียนรู้วิธีที่ยากที่จะตัดการเชื่อมต่อจากเซิร์ฟเวอร์ใน Object Explorer ไม่ได้หยุดคุณหลังจากนั้นในการดำเนินการหน้าต่างแบบสอบถามที่เปิดอยู่แล้วบนเซิร์ฟเวอร์นั้น สถานการณ์ของฉันเป็นเช่นนี้: ฉันมี SSMS หนึ่งอินสแตนซ์ที่ฉันใช้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ dev / staging และเซิร์ฟเวอร์ที่ใช้งานจริงของเรา ฉันต้องลบข้อมูลจำนวนมากบน dev ดังนั้นฉันจึงคิดว่าฉันควรปิดการเชื่อมต่อกับการผลิต แต่ฉันไม่ได้สนใจหน้าต่างแบบสอบถามที่ฉันใช้ (โชคดีที่เรามีการสำรองข้อมูลไว้เพียงไม่กี่ชั่วโมง) ฉันไม่ใช่คนแรกที่ทำลายข้อมูลการผลิตและฉันจะไม่ใช่คนสุดท้ายที่ฉันแน่ใจ ดังนั้นฉันกำลังมองหารายการตรวจสอบแนวทางปฏิบัติที่ดีที่สุด ฯลฯ ที่ช่วยให้คุณลดความเสี่ยงในการดำเนินการค้นหาในฐานข้อมูลผิด คุณเคยเกิดเหตุการณ์เช่นนี้กับคุณมาก่อนและคุณได้ปรับเวิร์กโฟลว์ของคุณเพื่อพยายามหลีกเลี่ยงปัญหานี้ได้อย่างไร
12 sql-server  ssms 

4
ฉันจะถ่ายโอนข้อมูลเข้าสู่ระบบจาก 2008R2 เป็น 2014 ด้วยรหัสผ่านได้อย่างไร
ฉันได้ลองTasks> Generate Scripts...และตั้งค่า 'การเข้าสู่ระบบสคริปต์' ในตัวเลือกการเขียนสคริปต์ขั้นสูง แต่ฉันได้รับสิ่งนี้ในผลลัพธ์: /* For security reasons the login is created disabled and with a random password. */ มีวิธีง่ายๆในการเขียนสคริปต์การเข้าสู่ระบบเหล่านี้ด้วยรหัสผ่านหรือวิธีอื่นในการถ่ายโอนการเข้าสู่ระบบจากอินสแตนซ์ 2008R2 เป็นอินสแตนซ์ 2014 หรือไม่?

1
ฉันจะจัดเรียงผลลัพธ์ของข้อความค้นหาแบบเรียกซ้ำในลักษณะคล้ายต้นไม้แบบขยายได้อย่างไร
สมมติว่าคุณมีnodesตารางแบบนี้: CREATE TABLE nodes ( node serial PRIMARY KEY, parent integer NULL REFERENCES nodes(node), ts timestamp NOT NULL DEFAULT now() ); มันแสดงให้เห็นถึงโครงสร้างต้นไม้เหมือนโหนดมาตรฐานที่มีรูตโหนดที่ด้านบนและโหนดเด็กหลายห้อยจากโหนดรูทหรือโหนดเด็กอื่น ๆ ให้เราแทรกค่าตัวอย่างสองสามค่า: INSERT INTO nodes (parent) VALUES (NULL), (NULL), (NULL), (NULL), (1), (1), (1), (1), (6), (1) , (6), (9), (6), (6), (3), (3), (3), (15); ตอนนี้ฉันต้องการเรียกรูต 10 …

2
วิธีปิดการใช้งานบริการ MySQL เริ่มต้นเมื่อเริ่มต้น Windows7
เมื่อฉันเปิดเดสก์ท็อปของฉัน (Windows 7 SP1) ฉันมักจะพบว่าหน่วยความจำ 2 หรือ 3 GB ถูกใช้งานอยู่ในกระบวนการ MySQL อยู่แล้ว ฉันไม่สนใจว่าต้องใช้หน่วยความจำมากแค่ไหนในฐานข้อมูลถ้าเป็นจริงเรียกใช้แบบสอบถาม แต่ฉันทำถ้าเป็นแอพที่ฉันยังไม่เริ่มเอง สำหรับเรื่องนั้นฉันแทบจะไม่ใช้ MySQL ยกเว้นเมื่อฉันพัฒนาเว็บแอพบางตัวในสภาพแวดล้อมท้องถิ่นของฉัน ดังนั้นจึงเป็นไปได้ที่จะหยุดตะกละนี้ ฉันพยายามลบ MySQL ออกจากกลุ่มเริ่มต้นของฉันผ่านทางmsconfigแต่ไม่พบชื่อของที่นั่น นี่คือข้อมูลเพิ่มเติม mysql Ver 14.14 Distrib 5.6.15, for Win64 (x86_64) MySQL Server 5.6 MySQL Workbench 6.0
12 mysql  windows 

1
ฉันจะตีความผลลัพธ์ของ DMV เหล่านี้เพื่อช่วยฉันประเมินกลยุทธ์การแบ่งพาร์ติชันของเราได้อย่างไร
เวอร์ชัน: SQL Server 2008 R2 Enterprise Edtn (10.50.4000) ในความพยายามที่จะประเมินกลยุทธ์การแบ่งพาร์ติชันของฉันฉันเขียนแบบสอบถามนี้เพื่อรับวิธีการเข้าถึงกับดัชนีในพาร์ติชัน (ในความหมายกว้างที่สุดของคำแม้ว่าฉันจะกำจัดกอง) ในขณะที่ฉัน จำกัด การโฟกัสไปที่ตารางที่แบ่งพาร์ติชันฉันเชื่อว่าฉันต้องมองrange_scan_countและsingleton_lookup_countแต่ก็มีช่วงเวลาที่ยากลำบากในการกำหนดแนวคิด SELECT t.name AS table_name, i.name AS index_name, ios.partition_number, leaf_insert_count, leaf_delete_count, leaf_update_count, leaf_ghost_count, range_scan_count, singleton_lookup_count, page_latch_wait_count , page_latch_wait_in_ms, row_lock_count , page_lock_count, row_lock_wait_in_ms , page_lock_wait_in_ms, page_io_latch_wait_count , page_io_latch_wait_in_ms FROM sys.dm_db_partition_stats ps JOIN sys.tables t ON ps.object_id = t.object_id JOIN …

1
สร้างดัชนี SQL Server 2008 R2 ล้มเหลวด้วยความรุนแรง 17
ในบางครั้งระหว่างการบำรุงรักษาดัชนีของเรางานจะล้มเหลวพร้อมกับข้อผิดพลาด SEV 17 ที่ไม่สามารถจัดสรรพื้นที่ได้เพียงพอสำหรับวัตถุที่สร้างใหม่ ฐานข้อมูลถูกจัดวางเช่น: Data_file1 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file2 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file3 PRIMARY 0 growth Less than 1% free Max Size UNLIMITED Data_file4 PRIMARY 250 MB growth Less than 1% free Max Size UNLIMITED โดยพื้นฐานแล้วไฟล์ข้อมูล 3 ใน 4 …

2
ติดตั้ง MariaDB 10 บน Ubuntu โดยไม่ต้องแจ้งและไม่มีรหัสผ่านรูท
ค่อนข้างเหมือนกันกับคำถามนี้แต่ฉันไม่ต้องการมีรหัสผ่านรูท (นี่เป็นเพียงเครื่องจักร dev) นี่คือสิ่งที่ฉันได้รับ: export DEBIAN_FRONTEND=noninteractive sudo debconf-set-selections <<< 'mariadb-server-10.0 mysql-server/root_password password PASS' sudo debconf-set-selections <<< 'mariadb-server-10.0 mysql-server/root_password_again password PASS' sudo apt-get install -y mariadb-server สิ่งนี้จะทำการติดตั้ง MariaDB แบบเงียบ ๆ แต่จะตั้งค่ารหัสผ่านรูทเป็น "PASS" ถ้าฉันลบมันจะติดตั้งบางส่วนแปลกเพราะมันยังคงพยายามที่จะแจ้งให้ฉัน
12 ubuntu  mariadb 

1
ฉันจะตรวจสอบได้อย่างไรว่าการแปลง SSIS ไม่ใช่การปิดกั้นการบล็อกบางส่วนหรือการบล็อกทั้งหมด
มีหลายบล็อกที่อ้างว่าจัดประเภท SSIS เป็นการแปลง (แบบอะซิงโครนัส), การไม่บล็อก (ซิงโครนัส) และการบล็อกบางส่วน (อะซิงโครนัส) เมื่อตรวจสอบคำถามที่เฉพาะเจาะจง: มัลติคาสต์ซิงโครนัส (ไม่ปิดกั้น) หรืออะซิงโครนัส (ปิดกั้นบางส่วน) หรือไม่ แหล่งข้อมูลหนึ่งอ้างว่า async: "Multicast เป็นการแปลงแบบอะซิงโครนัส (หรือเรียกอีกอย่างว่าการบล็อกบางส่วน)" : http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transformation.aspx และอีกแบบย่อ: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/ แหล่งข้อมูลอื่นอ้างว่าการแปลง DQS Cleansing เป็นการแปลงที่ไม่มีการปิดกั้น แต่ดูเหมือนว่าฉันกำลังปิดกั้นบางส่วน กรุณาอย่าตอบด้วยลิงค์ไปยังรายการของการแปลงประเภทตามประเภท คำตอบสำหรับคำถามนี้หวังว่าจะช่วยให้วิธีการที่เข้มงวดยิ่งขึ้นเพื่อพิสูจน์คำตอบที่ถูกต้อง เนื่องจากการแปลงบล็อกและบล็อกบางส่วนจะย้ายข้อมูลไปยังบัฟเฟอร์ใหม่ซึ่งไม่ใช่การบล็อกซึ่งทำงานกับบัฟเฟอร์ในสถานที่ฉันสงสัยว่าโซลูชันจะเฝ้าดูการสร้างบัฟเฟอร์ระหว่างการดำเนินการแปลง แต่ฉันไม่แน่ใจ ( ) ถ้าสิ่งนี้จะสร้างคำตอบที่ชัดเจนและ (b) วิธีการทำเช่นนี้ ฉันเชื่อว่าการแปลงที่ไม่ปิดกั้นจะไม่ทำให้แผนผังการดำเนินการใหม่เริ่มต้นดังนั้นจึงเป็นไปได้ว่าคำตอบนั้นอยู่ในการบันทึก PipelineExectionTrees และ PipelineExecutionPlan สิ่งนี้อาจแยกความแตกต่างระหว่างแบบซิงโครนัสและแบบอะซิงโครนัส แต่อาจไม่แยกความแตกต่างระหว่างการบล็อกบางส่วนและการบล็อกอย่างสมบูรณ์

2
เซสชันหยุดทำงานด้วย TM REQUEST และจัดการกับแผน 0x0000
เรามีเหตุการณ์เป็นระยะซึ่งมีการเชื่อมต่อจำนวนมากค้างอยู่บนคำขอ TM (จากsys.dm_os_waiting_tasks) และไม่มีความคืบหน้า KILLที่ได้รับผลกระทบsession_idไม่ทำอะไรเลย เซิร์ฟเวอร์รันการมิเรอร์ฐานข้อมูล (2008R2) การหยุดชั่วคราวและการทำมิเรอร์ต่อไปจะช่วยแก้ไขปัญหาเมื่อเกิดขึ้น เซสชันที่ติดอยู่ในสถานะนี้ไม่สามารถฆ่าได้ โหลดบนกระจกเป็นปกติไม่แตก เมื่อการเชื่อมต่อจำนวนมากติดอยู่ในสถานะนี้ระบบจะหยุดทำงานและมิเรอร์หยุดการเรพลิเคต (เคียวรีทั้งหมดถูกบล็อก) ใครเคยเห็นสิ่งนี้มาก่อนและรู้ว่าอะไรทำให้เกิดอะไรขึ้น ไม่มีสิ่งใดในบันทึกข้อผิดพลาด
12 sql-server 

1
ความแตกต่างระหว่าง FreeProcCache และ FreeSystemCache
ขณะนี้ฉันรันDBCC FREEPROCCACHEเมื่อฉันต้องการลบข้อมูลออกจากบัฟเฟอร์พูลระหว่างการรันเคียวรี SQL แต่ผมได้รับการตรวจสอบนี้ Technet DBCC FREESYSTEMCACHEอ้างอิงบทความ แคชอะไรที่ไม่FREESYSTEMCACHEเช็ดFREEPROCCACHE?
12 sql-server  cache 

1
SQL-Server - ให้สิทธิ์ DBO ของผู้ใช้ในฐานข้อมูล
ฉันมีฐานข้อมูลการรายงานที่คืนค่าทุกคืนจากการสำรองฐานข้อมูลการผลิต เมื่อฉันกู้คืนฉันต้องเพิ่มผู้ใช้ในDBOบทบาทสำหรับฐานข้อมูลนั้น ฉันคิดว่ามันจะทำงาน: use Restored_Prod go exec sp_addrolemember 'db_owner', 'chris' go แต่ฉันได้รับข้อผิดพลาดต่อไปนี้เนื่องจากผู้ใช้นั้นไม่มีอยู่ในฐานข้อมูล Restored_Prod: Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75 User or role 'chris' does not exist in this database. ฉันจะเพิ่มผู้ใช้ 'chris' ลงในฐานข้อมูลเพื่อให้สามารถเรียกใช้sp_addrolememberเพื่อทำให้เขาเป็นDBOฐานข้อมูลนั้นได้อย่างไร มีวิธีเพิ่มสิทธิ์ผู้ใช้โดยใช้sp_addrolememberคำสั่งจาก master db ที่มีผู้ใช้อยู่หรือไม่?

1
SQL Server 2012 Standard Server ที่มี 50 อินสแตนซ์จะไม่ถอนการติดตั้งอินสแตนซ์
ฉันสงสัยว่านี่เป็นปัญหาเพราะเราพบขีด จำกัด สูงสุด 50 อินสแตนซ์ของ SQL Server ที่ขีด จำกัด มันจะไม่ติดตั้งอินสแตนซ์เพิ่มเติมตามธรรมชาติ อย่างไรก็ตามดูเหมือนว่าจะไม่ติดตั้งให้เหมือนกัน แย่กว่านั้น แฮงค์ที่กล่องโต้ตอบ "เลือกคุณสมบัติ" เมื่อคุณกดปุ่มถัดไปหลังจากเลือก SQL Engine สำหรับอินสแตนซ์ ฉันไม่พบข้อมูลมากมายเกี่ยวกับสิ่งนี้ สิ่งที่น่าสนใจที่สุดคือ: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/24a1e5f3-25f3-48c8-973a-4c6a18578e42/trying-to-uninstall-1-of-50-sql -Server-2008-R2-ด่วนแฮงค์-on-โปรดรอ นอกจากนี้ยังแนะนำให้ใช้setup.exeกับพารามิเตอร์บางตัวเพื่อถอนการติดตั้งอินสแตนซ์ แต่ฉันไม่สามารถทำได้โดยไม่ต้องเริ่ม GUI และเข้าสู่การถอนการติดตั้งปกติซึ่งล้มเหลว ระดับความสูงไม่ทำอะไรเลย รีบูตไม่ได้ช่วย บันทึกบอกว่า "ถูกยกเลิกโดยผู้ใช้" เท่านั้นเพราะฉันต้องฆ่ามันในที่สุด ไม่มีอะไรชัดเจนก่อนที่จะถึงจุดนั้น การตรวจสอบเป็นสีเขียวทั้งหมด การตั้งค่าบอกว่าเป็น SQL Server 2012 SP1 - อินสแตนซ์ทั้งหมดอยู่ที่ 11.0.2100 ฉันเลือกที่จะตอบ / ปิดคำถามของฉันเองเนื่องจาก Microsoft ได้ปิดตั๋วด้วยสถานะ "ไม่แก้ไข" หวังว่าพวกเขาจะแก้ไขสิ่งนี้สำหรับ SQL Server …

2
ประสิทธิภาพของคีย์หลักคอมโพสิตเป็นคีย์ต่างประเทศ
ฉันมีตารางที่มีคีย์หลักคอมโพสิต (ประกอบด้วย 4 คอลัมน์) ซึ่งใช้เพื่อให้แน่ใจว่าไม่มีรายการที่ซ้ำกันถูกป้อนลงในตาราง ตอนนี้ฉันต้องการโต๊ะใหม่ซึ่งจะต้องอ้างอิงคีย์ในตารางนี้เป็นคีย์ต่างประเทศ คำถามของฉันคือวิธีใดที่มีประสิทธิภาพมากกว่าสำหรับความเร็วการค้นหา: 1) ฉันจะสร้างตารางใหม่รวมทั้งคอลัมน์ทั้ง 4 และอ้างอิงพวกเขาทั้งหมดในคีย์ต่างประเทศ หรือ 2) ฉันจะสร้างคอลัมน์ข้อมูลประจำตัวใหม่ในตารางคีย์หลักและใช้เป็นคีย์ต่างประเทศในตารางใหม่หรือไม่ ฐานข้อมูลนี้คาดว่าจะเก็บข้อมูลจำนวนมากดังนั้นฉันได้สร้างมันขึ้นมาจนถึงตอนนี้ด้วยมุมมองที่จะลดจำนวนข้อมูลที่เก็บไว้ในแต่ละตาราง ด้วยสิ่งนี้ในใจตัวเลือก 2 จะเป็นวิธีที่ดีที่สุดเนื่องจากฉันจะบันทึก 2 คอลัมน์และคอลัมน์วันที่สำหรับทุกแถว แต่ฉันต้องการหลีกเลี่ยงการเพิ่มเวลาการค้นหาหากไม่จำเป็น

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


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