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

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

1
ความหมายของความปลอดภัยของ sp_executesql คืออะไร
โดยค่าเริ่มต้นใน SQL Server ที่[public]มีบทบาทสิทธิEXECUTEsp_executesql แต่ผมได้รับมรดกเซิร์ฟเวอร์ฐานข้อมูลที่ DBA ก่อนหน้านี้ได้มีการเพิกถอนขวาบนEXECUTEsp_executesql ในฐานะวิธีแก้ปัญหาชั่วคราวฉันได้ให้EXECUTEสิทธิsp_executesqlในการใช้งานตามความจำเป็น (ผ่านบทบาทในฐานข้อมูลหลัก) แต่นี่เป็นจุดเริ่มต้นของความเจ็บปวดในการบำรุงรักษา หากฉันมอบEXECUTEคืนสู่สาธารณะมีผลกระทบใดที่ฉันต้องระวังหรือไม่?

1
ทำไมปัจจัยการเติมใน SQL Server เริ่มต้นที่ 0 (100%)
ฉันเข้าใจปัจจัยการเติมหน้าและโครงสร้างดัชนีและฉันเข้าใจว่าทำไมปัจจัยการเติมเต็ม 100% จึงเป็นแนวปฏิบัติที่ดีที่สุดที่หายาก เหตุใดจึงใช้ค่าเริ่มต้นเป็น 0 (หรือ 100%) เป็นค่าเริ่มต้น ทำไมไม่ 90 หรือ 95 มีบางอย่างที่ฉันขาดหายไปหรือไม่?

2
วิธีการปิด Oracle
การปิดฐานข้อมูลก่อนทำการอัปเกรดหรือสามารถทำการแก้ไขได้หลายวิธี shutdown immediate; หรือ shutdown abort; startup restrict; shutdown immediate; หรือ shutdown abort; startup restrict; shutdown; หรือ alter system checkpoint; shutdown abort; startup restrict; shutdown immediate; แน่นอนมีตัวเลือกอื่น ๆ เช่นกัน สิ่งใดควรเป็นที่ต้องการและเพราะอะไร

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

2
อัปเดตหลายแถวในตารางด้วยคำสั่งเดียว?
วิธีที่ง่ายที่สุดในการอัปเดตแถวจำนวนมากในตารางคืออะไร ฉันมีไฟล์ csv ที่มีลักษณะเช่นนี้: |primary_key |value| | 1 | xyz| | 2 | abc| | 3 | def| ... แถวที่มีคีย์หลักเหล่านี้มีอยู่แล้วในตารางเป้าหมาย ฉันต้องการอัปเดตตารางเป้าหมายด้วยค่าเหล่านี้ มีไวยากรณ์เพื่อให้ฉันสามารถเขียนสิ่งที่ชอบ: update mytable set value = ('xyz', 'abc', 'def') where primary key = (1,2,3); มองผ่านMySQL ปรับปรุงอ้างอิงไซต์นี้ ( MySQL - ปรับปรุง CSV ) ดังนั้น ( ปรับปรุงหลายแถว , การปรับปรุงฐานข้อมูลหลาย , การปรับปรุงหลายแถว …
9 mysql  update  replace 

6
วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งานฐานข้อมูลด้วยข้อมูลจริงคืออะไร?
ฉันมีโครงการที่สามารถได้รับประโยชน์จากการใช้ฐานข้อมูล แต่ฉันไม่มีประสบการณ์เกี่ยวกับฐานข้อมูลไม่สามารถเข้าถึงเซิร์ฟเวอร์และมีประสบการณ์การทำงานกับสิ่งต่าง ๆ ที่อาศัยอยู่ฝั่งเซิร์ฟเวอร์ค่อนข้างน้อย ถ้าฉันจะต้องจัดการกับโค้งการเรียนรู้ฉันต้องการที่จะเรียนรู้บางสิ่งบางอย่างที่มีการบังคับใช้อย่างกว้างขวาง (เช่น SQL) แต่จะชำระเพื่อการเรียนรู้บางอย่างเช่นการเข้าถึงถ้ามันมีประสิทธิภาพเพียงพอสำหรับงานที่ฉันกำลังพยายาม ต่อสู้ แน่นอนว่าฉันไม่ควรวาง $ 150 บน Access ถ้ามันช่วยได้เพราะฉันแค่ซ่อมมัน ฉันได้ดาวน์โหลด LibreOffice Base รวมถึงสิ่งที่เรียกว่า SQLiteBrowser แต่ฉันต้องการตรวจสอบก่อนที่จะลงทุนเวลาเรียนรู้แอปพลิเคชันเฉพาะและรสชาติของ SQL ว่าเครื่องมือเหล่านั้นจะเพียงพอสำหรับสิ่งที่ฉันต้องการหรือไม่ ฉันต้องการที่จะสามารถ: นำเข้าข้อมูลจาก CSV หรือจาก Excel เรียกใช้เคียวรีที่ถือเป็น "เลือก x โดยที่นี่คือสิ่งนี้และสิ่งนี้มีและสิ่งใด ๆ เหล่านี้มีที่" เขียน (?) เขตข้อมูลใหม่ซึ่งระบุผลลัพธ์เหล่านั้นซึ่งตรงกับแบบสอบถามที่กำหนด อีกครั้งฉันยินดีที่จะเรียนรู้ แต่มันจะดีไม่ต้องเรียนรู้สิ่งต่าง ๆ เกี่ยวกับไอทีก่อนที่ฉันจะสามารถมุ่งเน้นไปที่การเรียนรู้ฐานข้อมูลและถ้าจำเป็นต้องมีรายละเอียดของแอปพลิเคชันที่กำหนด

2
ฉันจะรับแผนปฏิบัติการสำหรับมุมมองได้อย่างไร
ฉันมีสคีมาพร้อมจำนวนการดู ฉันต้องตรวจสอบแผนการดำเนินการเพื่อให้แน่ใจว่ามีการใช้ดัชนีที่เหมาะสมและถูกต้องหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันไม่ต้องการคัดลอกและวางผลลัพธ์จากshow create view <viewname>ลงในexplainโดยเฉพาะอย่างยิ่งเนื่องจากบางมุมมองถูกสร้างขึ้นจากมุมมองอื่นและนี่อาจเป็นความเจ็บปวด

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

4
จะแสดงโครงสร้างฐานข้อมูลใน phpMyAdmin อย่างไร
มีวิธีการสร้างรายงานของโครงสร้างฐานข้อมูลของฉันโดยใช้ phpMyAdmin หรือไม่ สิ่งที่ฉันต้องการคือรูปแบบตารางดังต่อไปนี้และตารางความสัมพันธ์เอนทิตี Table name: List Description: Subscriber list information Field Type Null Description ListID Int N ListName Varchar N ListFromName Varchar N Default person represent for the mail ListReplyTo Varchar N Default return address ListSubject Varchar N Default subject title of mail ListRemindSub Int N Whether notify when …

3
วิธีการระบุลำดับคอลัมน์ในตาราง
ฉันต้องการรายการคอลัมน์จากตารางตามลำดับคำจำกัดความของตาราง: select * from syscolumns where id = object_id('MyTable') --order by colid โดยการตรวจสอบsyscolumnsตารางสองคอลัมน์มองที่เกี่ยวข้อง: และcolid บทความ MSDN ใน syscolumnsพูดว่า:colorder colid | smallint | Column or parameter ID. colorder | smallint | Identified for informational purposes only. | Not supported. Future compatibility is not guaranteed. ฉันพยายามวิ่ง select * from syscolumns where colorder …

3
ทำไม MySQL ตารางขัดข้อง ฉันจะป้องกันมันได้อย่างไร
ฉันเป็นผู้ดูแลระบบของไซต์Moodleที่ตารางผู้ใช้เสียหายและกลายเป็นใช้ไม่ได้ โชคดีที่ความเรียบง่ายREPAIR TABLE mdl_userทำให้มันทำงานได้อีกครั้ง สิ่งนี้คือฉันไม่รู้ว่าทำไมมันจึงล้มเหลวจริง ๆ และทำให้มันใช้ไม่ได้และฉันต้องการให้แน่ใจว่าฉันจะเตรียมตัวดีขึ้นในครั้งต่อไป ฉันไม่ใช่ DBA ที่มีประสบการณ์อย่างถี่ถ้วน - ฉันเป็นเพียงนักพัฒนาที่ทำสิ่งต่างๆมากมายดังนั้นโปรดอดทนกับฉัน ฉันสามารถกู้คืนข้อมูลสำรอง แต่ฉันเดาว่ามีวิธีการป้องกันการล่ม ตารางเหล่านั้นคือ utf8_general_ci และใช้ MyISAM ทำไมตาราง MySQL ผิดพลาด ฉันจะทำอย่างไรเพื่อป้องกันไม่ให้เกิดขึ้น
9 mysql  myisam 

1
สคีมาที่ออกแบบมาเพื่อจัดการเกตเวย์การชำระเงินหลายรายการ
นี่เป็นคำถามเพิ่มเติมที่ต้องการความคิดเห็น ฉันกำลังออกแบบฐานข้อมูลที่จัดการเกตเวย์การชำระเงินหลายรายการ เกตเวย์การชำระเงินส่วนใหญ่ต้องการตารางสำหรับรายละเอียดการสั่งซื้อก่อนชำระเงิน (นี่เป็นเรื่องปกติสำหรับ PGs ทั้งหมด) และตารางสำหรับรายละเอียดธุรกรรมเพื่อจัดเก็บการตอบสนองหลังจากทำการชำระเงิน ตอนนี้เพื่อจัดการเกตเวย์การชำระเงินหลายรายการฉันสามารถเก็บตารางธุรกรรมเดี่ยวได้โดยบรรจุด้วยฟิลด์ทั้งหมดที่มีอยู่จากเกตเวย์การชำระเงินทั้งหมดและฟิลด์ที่ระบุว่าแถว PG นั้นมาจากไหน หรือฉันสามารถสร้างตารางธุรกรรมแยกกันสำหรับแต่ละ PG ที่มีคำนำหน้าเช่นpaypal_หรือbank_อื่น ๆ แต่ละคนมีเขตข้อมูลที่แต่ละคนต้องการ ฉันไม่แน่ใจว่าวิธีไหนที่เหมาะสมที่สุดในการทำเช่นนี้ ยังต้องเรียนรู้สำหรับสถานการณ์ที่คล้ายกันซึ่งฉันอาจเจอในอนาคต

4
มีเหตุผลที่ดีในการรักษาวันที่และเวลาในคอลัมน์แยกกันหรือไม่?
ฉันพยายามเข้าใจการตัดสินใจของผู้จำหน่ายซอฟต์แวร์ของเราเพื่อเก็บวันที่และเวลาในคอลัมน์แยกกัน ตัวอย่างเช่นเมื่อแถวถูกสร้างหรือปรับปรุง ทั้งเวลาและวันที่เป็นคอลัมน์ DateTime เรากำลังใช้ SQL Server 2005 ฐานข้อมูลเก็บข้อมูลระบบ ERP ของเราและฉันเชื่อว่าตารางที่ใหญ่ที่สุดมีประมาณ ~ 3 ล้านแถว ตารางส่วนใหญ่อยู่ระหว่างประมาณ 100,000 ถึง 1 000 000 แถว โดยส่วนตัวแล้วฉันจะเลือก DateTime เดียวสำหรับการประทับเวลาเดียว สิ่งนี้จะช่วยให้การคำนวณความแตกต่างของเวลาง่ายขึ้นและสามารถแยกส่วนวันที่และเวลาได้อย่างง่ายดายจากการประทับเวลา มันจะใช้พื้นที่น้อยลง การแยกวันและเวลานั้นเป็นการฝึกฝนที่ไม่ดีหรือมีบางสิ่งที่ยอดเยี่ยมมากในการออกแบบนี้ที่ฉันไม่เข้าใจ

2
ทำไม Microsoft ถึงฆ่า“ English Query” บน SQL Server
ได้รับความนิยมของผู้ใช้ภาษาธรรมชาติอินเตอร์เฟซสิริซึ่งได้มาจากแอปเปิ้ล $ 200 ล้านผมเคยสงสัยว่าถ้าใครรู้ว่าทำไมไมโครซอฟท์ถูกฆ่าตาย"แบบสอบถามภาษาอังกฤษ" ใน SQL Server

2
มีการรวบรวมสคริปต์ PowerShell ใด ๆ ที่ช่วยงานบำรุงรักษา SQL Server หรือไม่
ฉันกำลังศึกษา PowerShell และฉันได้รับอย่างช้า ๆ ในการทำงาน DBA แบบวันต่อวัน จนถึงตอนนี้ฉันได้เห็นสคริปต์ PowerShell ที่ไม่ได้เชื่อมต่อสำหรับกิจกรรมการดูแลระบบที่แตกต่างกันจำนวนมาก สิ่งที่ฉันต้องการทราบคือมีคอลเลกชันหรือพื้นที่เก็บข้อมูลสคริปต์อย่างเป็นทางการ (หรือที่รู้จัก) PowerShell ที่ผู้คนมักจะไปที่สคริปต์ SQL Server PowerShell สำหรับกิจกรรม DBA ทั่วไป (เช่นสคริปต์ T-SQL ของ Ola Hallengren)

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