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

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

4
SQL 2008 R2 สร้างผู้ใช้ / สคีมาเมื่อผู้ใช้ Windows สร้างตาราง
เราเพิ่มการเข้าสู่ระบบเซิร์ฟเวอร์และผู้ใช้ฐานข้อมูลที่จับคู่ Windows Group กับอินสแตนซ์ SQL 2008 R2 โดยใช้สคริปต์ต่อไปนี้โดยเปลี่ยนชื่อเป็น anonymity: USE master go CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] go USE AppDb go CREATE USER [DOMAIN\AppUsers] FOR LOGIN [DOMAIN\AppUsers] go EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers' go เมื่อบัญชี DOMAIN \ User1 เข้าสู่แอป User1 ทำการสืบค้นตารางใน dbo schema ได้ดีเนื่องจาก User1 เป็นสมาชิกของ DOMAIN \ …

4
ฉันจะทราบได้อย่างไรว่าขั้นตอนหรือทริกเกอร์ที่เก็บไว้กำลังใช้ตารางใน SQL Server 2008 R2
นี่เป็นกรณีที่ใน DB ที่ฉันกำลังตรวจสอบมีตารางเก็บถาวรซึ่งเก็บประวัติผู้ใช้และมีทริกเกอร์หรือขั้นตอนการจัดเก็บที่หลังจากลบแถวออกจากตารางนี้ในบางครั้งเพื่อหลีกเลี่ยงการมีขนาดใหญ่เกินไป เหมือนกันฉันไม่ได้ออกแบบฐานข้อมูลฉันแค่ทำการบำรุงรักษาแอปพลิเคชันที่ใช้ฐานข้อมูลนี้ดังนั้นฉันจึงไม่ทราบชื่อของขั้นตอนหรือทริกเกอร์ที่เก็บไว้สิ่งที่ฉันต้องการทำคือค้นหาโพรซีเดอร์ที่เก็บไว้นี้ หรือทริกเกอร์ตรวจสอบรหัสและปรับเปลี่ยนเพื่อปล่อยให้ "ประวัติผู้ใช้" นี้ยาวขึ้นในตาราง มีคนบอกให้ฉันตรวจสอบตาราง "sysobjects" ซึ่งฉันสามารถเห็นบางสิ่งบางอย่างที่มีชื่อเดียวกันของตารางได้ แต่นี่เป็นข้อมูลเดียวที่ฉันสามารถเรียกคืนได้คำแนะนำใด ๆ ขอบคุณ.

3
ต้องการความช่วยเหลือในการแก้ไขปัญหาสถานการณ์การหยุดชะงักของ SQL Server 2005
ฉันกำลังทำงานในสถานการณ์การหยุดชะงักที่ผู้เข้าร่วมเพียงคนเดียวในการหยุดชะงักดูเหมือนจะเป็นตารางเดียวและขั้นตอนการจัดเก็บเดียวที่ถูกลบออกจากตารางนั้น ฉันดึงข้อสรุปนั้นจากการวิเคราะห์บันทึกข้อผิดพลาด sql ของฉันในช่วงเวลาของการหยุดชะงักหลายครั้งโดยใช้บทความ MSDN ด้านล่างเป็นแนวทางในการถอดรหัสการติดตามในบันทึกข้อผิดพลาด ตาราง DEXTable และขั้นตอนการจัดเก็บ ClearDEXTableRows มีการกำหนดไว้ด้านล่าง มีกระบวนงานที่เก็บไว้อีก InsertDEXTableRow ที่แทรกแถวลงใน DEXTable แต่ proc ที่ดูเหมือนจะไม่เกี่ยวข้องในการหยุดชะงักตามรายการในบันทึกข้อผิดพลาด sql DEXTable มีแถวที่อยู่ประมาณ 8.3 ล้านแถวและมีแนวโน้มที่จะเติบโตอย่างต่อเนื่อง ตารางผู้ตอบแบบสอบถามมีขนาดใหญ่และมีแนวโน้มที่จะเติบโตอย่างต่อเนื่อง มันเข้าถึงได้จากเว็บไซต์ปริมาณการใช้งานสูงที่มีหน้าเว็บที่เรียก ClearDEXTableRows และ InsertDEXTableRow บ่อย ๆ อย่างต่อเนื่อง การหยุดชะงักเกิดขึ้นระหว่าง 0 ถึง 9 ครั้งต่อวันในช่วง 10 วันที่ผ่านมา ฉันเปิดใช้งานการติดตาม sql สำหรับ 1222 (โดยใช้ DBCC TRACEON 1222) และเพิ่งเปิดใช้งานการตั้งค่าสถานะ 1204 มีคำอธิบายที่ดีเกี่ยวกับผลลัพธ์สำหรับการตั้งค่าสถานะเหล่านี้ในการตรวจจับและการสิ้นสุด Deadlocks …

2
วิธีสร้างคอลัมน์เฉพาะด้วยค่าเริ่มต้นของ UUID
ฉันมีคอลัมน์สำคัญสำหรับการใช้ภายในซึ่งเป็นเพียงจำนวนเต็มที่เพิ่มขึ้น แต่ฉันต้องการคอลัมน์ที่ไม่ซ้ำที่สองซึ่งเป็น UUID แต่ฉันไม่รู้ว่าจะมีฟังก์ชันที่เรียกใช้เป็นค่าเริ่มต้นได้อย่างไร (เพื่อให้ SQL เซิร์ฟเวอร์กำลังสร้าง UUID ไม่ใช่จาวา) มีเอกสารใดบ้างที่ฉันสามารถแนะนำให้ฉันได้

2
ฉันจะตัดการเชื่อมต่อไคลเอ็นต์จาก MySQL ได้อย่างไร
ฉันต้องการวิธีที่มีประสิทธิภาพในการยกเลิกการเชื่อมต่อลูกค้าทั้งหมดด้วยชื่อผู้ใช้ที่ได้รับจาก MySQL ฉันคิดถึงการเปลี่ยนรหัสผ่านผู้ใช้ แต่ฉันคิดว่าจะถูกตรวจสอบเฉพาะเมื่อทำการเชื่อมต่อ ไอเดีย?
9 mysql 

5
แบบสอบถามที่เรียกใช้แตกต่างกันใน SQL 2005 กับ SQL 2008R2
ที่สำนักงานของฉันเรามีข้อความค้นหาที่น่าเกลียด แต่ทำงานได้ค่อนข้างดีในการผลิตและในสภาพแวดล้อมการพัฒนา (20 วินาทีและ 4sec ตามลำดับ) อย่างไรก็ตามในสภาพแวดล้อมการทดสอบของเราใช้เวลามากกว่า 4 ชั่วโมง SQL2005 (+ แพตช์ล่าสุด) กำลังทำงานในการผลิตและการพัฒนา SQL2008R2 กำลังทำงานในการทดสอบ ฉันดูที่ Query Plan และมันแสดงให้เห็นว่า SQL2008R2 กำลังใช้ TempDB โดย Table Spool (lazy spool) เพื่อจัดเก็บแถวที่ส่งคืนจากลิงก์เซิร์ฟเวอร์ ขั้นตอนต่อไปคือการแสดงลูปซ้อน (ซ้ายกึ่งต่อต้านเข้าร่วม) ขณะที่กินแบบสอบถามถึง 96.3% เส้นแบ่งระหว่างตัวดำเนินการทั้งสองอยู่ที่ 5,398MB! แผนแบบสอบถามสำหรับ SQL 2005 ไม่แสดงการใช้ tempdb และไม่ใช้ Left Anti Semi Join ด้านล่างนี้คือรหัสที่ถูกสุขอนามัยและการดำเนินการตามแผนในปี 2005 ด้านบนคือ 2008R2 ด้านล่าง อะไรเป็นสาเหตุให้เกิดการเปลี่ยนแปลงอย่างรุนแรงและช้าลง? …

3
ค้นหาการจับคู่ที่ดีที่สุดและเรียงลำดับ
ฉันพยายามเขียนแบบสอบถามตามบรรทัดเหล่านี้: select * from tbl where col1 = 1 and col2 = 2 and col3 = 3 order by ... ; ฉันต้องการผลลัพธ์ทั้งหมดก่อนซึ่งทั้งหมด 3 WHEREตรงกับเงื่อนไข (3/3) จากนั้นผลลัพธ์ทั้งหมดที่ตรงกับ 2 เงื่อนไขใด ๆ (2/3) และสุดท้ายผลลัพธ์ที่ตรงกับเงื่อนไข 1 ข้อ (1/3) ต้องมีการเรียงลำดับชุดผลลัพธ์ทั้ง 3 ชุดเหล่านี้โดย (col4, col5, col6)ชุดผลความต้องการที่จะได้รับคำสั่งจาก ฉันสามารถทำสิ่งนั้นในแบบสอบถามเดียวได้ไหม ตัวอย่างเช่น: ตัวอย่าง http://img708.imageshack.us/img708/1646/sampletableresult1.jpg สคริปต์เพื่อสร้างข้อมูลทดสอบ: IF EXISTS (SELECT * FROM …

3
ฉันจะตัดทอนบันทึกธุรกรรมในฐานข้อมูล SQL Server 2008 ได้อย่างไร
ฉันจะตัดทอนบันทึกธุรกรรมในฐานข้อมูล SQL Server 2008 ได้อย่างไร อะไรคือวิธีที่ดีที่สุดที่เป็นไปได้? ฉันลองสิ่งนี้จากบล็อกดังนี้: 1) จากฐานข้อมูลการตั้งค่าไปจนถึงการกู้คืนอย่างง่ายการลดขนาดไฟล์และตั้งค่าอีกครั้งในการกู้คืนแบบเต็มคุณจะสูญเสียข้อมูลบันทึกที่มีค่าของคุณและจะไม่สามารถกู้คืนจุดได้ทันเวลา ไม่เพียงแค่นั้นคุณจะไม่สามารถใช้ไฟล์บันทึกที่ตามมาได้อีกด้วย 2) ลดขนาดไฟล์ฐานข้อมูลหรือฐานข้อมูลเพิ่มการกระจายตัว มีหลายสิ่งที่คุณสามารถทำได้ ก่อนอื่นให้เริ่มต้นการสำรองข้อมูลบันทึกอย่างเหมาะสมโดยใช้คำสั่งต่อไปนี้แทนการตัดทอนข้อมูลเหล่านั้นและทำให้ข้อมูลสูญหายบ่อยครั้ง BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak' GO ลบรหัสของการหดไฟล์ หากคุณทำการสำรองข้อมูลแฟ้มบันทึกที่เหมาะสมโดยปกติแล้วไฟล์บันทึกของคุณ (โดยปกติจะยกเว้นกรณีพิเศษ) จะไม่ใหญ่มาก

3
SQL Server - ระดับการแยกใดสำหรับคำสั่ง select ที่ไม่ได้บล็อก?
ฉันมีธุรกรรมที่ใช้เวลานาน (เรียกว่า, T1) ที่ดำเนินการลบปรับปรุงและแทรกบางอย่างในตารางใน SQL Server 2008 R2 ในเวลาเดียวกันกระบวนการอื่นเรียกใช้คำสั่งที่เลือกจากตารางนี้เป็นระยะ ภายใต้การตั้งค่าการแยกเริ่มต้น (READ COMMITTED ฉันคิดว่า?) T1 จะบล็อกคำสั่งที่เลือกไม่ให้ทำงานจนกว่าธุรกรรมจะทำหน้าที่หรือย้อนกลับ สิ่งที่ฉันต้องการเห็นคือคำสั่ง select เพื่อทำงานกับข้อมูลที่สอดคล้องกันแม้ในขณะที่ธุรกรรมกำลังดำเนินการอยู่ ฉันเชื่อว่าการแยก SNAPSHOT สามารถช่วยได้ แต่ไม่แน่ใจว่าฉันไปในทิศทางที่ถูกต้องหรือไม่ นี่จะเป็นระดับการแยกที่ดีที่สุดสำหรับแอปพลิเคชันนี้หรือไม่ ประการที่สองฉันไม่มีการควบคุมกระบวนการที่เรียกใช้คำสั่ง select แต่ฉันมีการควบคุมแอปพลิเคชัน. NET ที่เรียก T1 การเปลี่ยนแปลงระดับการแยกใด ๆ จะต้องการทั้งข้อความสั่งการเลือกและ T1 หรือว่าจะเพียงพอที่จะทำเครื่องหมายว่า T1 มีระดับการแยกต่างกันหรือไม่

3
วิธีเพิ่มหน่วยความจำ SQL Server
ฉันมีการติดตั้งแซนด์บ็อกซ์เซิร์ฟเวอร์ SQL บนคอมพิวเตอร์ของฉัน ฉันตั้งค่าอินสแตนซ์ของ SQL Server หน่วยความจำแล้วสามารถใช้งานได้ถึง 1,000 mb เมื่อใช้งานแบบเข้มข้นการใช้หน่วยความจำสูงถึง 1,000 mb เมื่อการดำเนินการสิ้นสุดลง SQL Server ยังคงเก็บหน่วยความจำไว้ วิธีเพิ่มการจองหน่วยความจำนี้ฟรี

1
ค่ามัธยฐาน, โหมด, เปอร์เซ็นไทล์และ OLAP
ฉันเป็นมือใหม่ที่พยายามโอบรอบ OLAP และฉันมีคำถามสองสามข้อ คำถามที่ 1: OLAP cube เก็บค่ามัธยฐาน, โหมด, เปอร์เซ็นไทล์ได้หรือไม่? คำถามที่ 2:แบบสอบถาม MDX ที่ผู้ใช้เขียนสามารถส่งคืนข้อมูลสรุปของข้อมูลระดับแถวได้หรือไม่ (เช่น: การทำธุรกรรม%> $ 100) หรือผู้ออกแบบคิวบ์ต้องเพิ่มสิ่งนี้ในคิวบ์หรือไม่ คำถามที่ 3:ผลิตภัณฑ์ OLAP ใด ๆ มีกลไกสำหรับการเข้าถึงข้อมูลระดับแถวหรือไม่ ที่? แผนกไอทีของเรากำลังค้นหาคำติชมเกี่ยวกับปัญหาที่เรามีกับคิวบ์ ROLAP MS Analsis Services เราไม่สามารถเข้าถึงฐานข้อมูลเชิงสัมพันธ์ที่อยู่ด้านหลังและจำเป็นต้องทำการคำนวณที่ไม่สามารถใช้งานได้ในปัจจุบันเป็นมาตรการในคิวบ์ ให้ฉันดูว่าฉันมีสิทธิ์นี้ไหม คิวบ์สามารถจัดเตรียมสถิติสำหรับการนับหมายถึงสัดส่วนการเบี่ยงเบนมาตรฐาน หากสถิติเฉพาะไม่ได้รับการตอบสนองในการวัดที่ได้รับจากนักออกแบบคิวบ์เราสามารถเขียนแบบสอบถาม MDX เพื่อรับมันได้หรือไม่ หรือพวกเขาจำเป็นต้องเปลี่ยนคิวบ์เพื่อคำนวณล่วงหน้าจากข้อมูลระดับแถว คิวบ์ไม่สามารถให้ข้อมูลสถิติเช่นค่ามัธยฐานโหมดหรือค่าร้อยละได้เนื่องจากสถิติเหล่านี้ไม่ได้ทำให้รุนแรงขึ้นอย่างเหมาะสม ฉันกำลังอ่านไวยากรณ์ของกราฟิกของ Leland Wilkinson และในบทของเขาเกี่ยวกับ Data Mining และ OLAP เขากล่าว [การดำเนินการคิวบ์] เหล่านี้ทำงานได้ดีกับสถิติเช่นการนับค่าเฉลี่ยสัดส่วนและส่วนเบี่ยงเบนมาตรฐาน …
9 ssas  statistics  olap 

2
รหัสจะสร้างแผนที่แตกต่างเมื่อเรียกใช้ Ad-hoc เทียบกับในขั้นตอนการจัดเก็บ
ฉันมีคำสั่งลบที่ใช้แผนไม่ดีเมื่อเรียกใช้ภายในกระบวนงานที่เก็บไว้ แต่เลือกแผนที่ดีกว่ามากเมื่อเรียกใช้โฆษณา ฉันสร้างดัชนีทั้งหมดใหม่สำหรับตารางที่ใช้โดยแบบสอบถามและทำให้แคชทั้งหมดหายไป เครื่องมือเพิ่มประสิทธิภาพยังคงเลือกแผนผิดสำหรับขั้นตอนการจัดเก็บ ฉันต้องการทราบว่าเพราะเหตุใดเครื่องมือเพิ่มประสิทธิภาพใช้แผนการดำเนินการที่แตกต่างกันสำหรับขั้นตอนการจัดเก็บเทียบกับ ad-hoc SQL UPDATE: ฉันเดาว่ามันต้องเป็นพารามิเตอร์หลังจากทั้งหมด - เมื่อฉันรันโค้ด ad-hoc พร้อมตัวแปร hardcoded ฉันสามารถรับแผน "ไม่ดี" ด้วยค่าที่ถูกต้อง (เป็นวันที่ค่าที่มีอายุหนึ่งปี ดูเหมือนจะสร้างแผน "ดี") ตอนนี้พยายามบังคับแผน "ดี" ใน proc โดยใช้คำใบ้แบบสอบถาม การแก้ไข: ฉันสิ้นสุดการรับแผนที่ฉันต้องการโดยใช้คำแนะนำที่เหมาะสมที่สุดสำหรับคำใบ้ที่ไม่รู้จัก

1
แอปพลิเคชันใช้เซสชันมากเกินไปเมื่อใด
ฉันกำลังทำงานกับแอปพลิเคชันไคลเอนต์เซิร์ฟเวอร์ที่ใช้ OCI เพื่อสื่อสารกับ Oracle ในอดีตที่ผ่านมาแอปพลิเคชันของเรามักจะถือว่าเซสชันเป็นทรัพยากรที่ไม่มีที่สิ้นสุดค่อนข้างจะทำให้เกิดความเสียหายกับแอปพลิเคชันอื่น ๆ ที่แบ่งปันเซิร์ฟเวอร์ Oracle ฉันพยายามโน้มน้าวให้นักพัฒนาเพื่อนของฉันเห็นว่ามันเป็นสิ่งสำคัญสำหรับแอปพลิเคชันของเราที่จะเล่นกับผู้อื่นได้ดีและไม่ได้เป็นเหมือนหมูทรัพยากร Oracle DBA ของคุณจะพิจารณาว่าแอปพลิเคชันที่ใช้เซสชัน (หรือการละเมิด) มากเกินไป ณ จุดใด แก้ไข: ปัจจุบันหนึ่งในผู้บริโภคที่ใหญ่ที่สุดของเซสชันคือองค์ประกอบนี้ที่ใช้การโหลดเส้นทางโดยตรงเพื่อโหลดจำนวนมากหลายตาราง (20-30) พร้อมกัน
9 oracle 

7
ภารกิจการสำรองข้อมูลตามกำหนดเวลาไม่ได้ทำการสำรองฐานข้อมูลทั้งหมดเสมอ
ฉันมีงานใน SQL 2008 ที่รัน proc ที่เก็บไว้เพื่อสำรองฐานข้อมูลทั้งหมด สิ่งนี้รันทุกวันผ่านงานตัวแทนเซิร์ฟเวอร์ sql มันหยุดทำงานด้วยความสำเร็จทุกวัน แต่บางวันก็หยุดทำงานด้วยความสำเร็จหลังจากทำการสำรองฐานข้อมูลบางส่วนเท่านั้น อาจเป็นจำนวนฐานข้อมูลที่แตกต่างกันในแต่ละครั้ง วันส่วนใหญ่จะสำเร็จการสำรองฐานข้อมูลทั้งหมด แต่บางครั้งการสำรองข้อมูล 2 สำเร็จบางครั้ง 5 เป็นต้น ฉันไม่เห็นข้อผิดพลาดใด ๆ ในประวัติงาน, ตัวแสดงเหตุการณ์หรือบันทึกเซิร์ฟเวอร์ sql กำลังสำรองข้อมูลไปยังดิสก์ภายในเครื่องแม้ว่าโฟลเดอร์จะเป็น "จุดเชื่อมต่อ" ไปยังโฟลเดอร์บนไดรฟ์ข้อมูลที่เก็บข้อมูลแบบขยายได้ ระบบปฏิบัติการ Windows 2003 64 บิตที่เรียกใช้ Sql Server 2008 web edition 64 บิตเป็นเครื่องเสมือนที่ทำงานบนโฮสต์ Vmware ESXi 5 ขั้นตอนการเก็บ: ALTER PROCEDURE [dbo].[backup_all_databases] @path VARCHAR(255)='c:\backups\' AS DECLARE @name VARCHAR(50) …

4
ฉันควรถามอะไรในการสัมภาษณ์ MySQL DBA
ฉันเป็นนักพัฒนาซอฟต์แวร์และช่วยให้ทีมของฉันจ้าง MySQL DBA ความท้าทายหลักที่เราเผชิญคือ: คิวรีและประสิทธิภาพที่ช้าลงเนื่องจากไฮเบอร์เนต การจัดการฐานข้อมูล (สำรอง, ปรับแต่ง, แก้ไข, ความปลอดภัย) ความสามารถในการปรับขนาดเนื่องจากการเพิ่มขึ้นของข้อมูลจากแหล่งข้อมูลใหม่และการสะสมของข้อมูลเก่า เราวางแผนที่จะเริ่มการขุดข้อมูลและคลังข้อมูลในอนาคต ไม่แน่ใจว่าเป็นอย่างไร เรามักจะมีกรณีการเขียนโปรแกรมที่เราขอให้นักพัฒนาสร้างบางอย่างสำหรับการสัมภาษณ์ แต่มันก็ยากที่จะทำการสัมภาษณ์ DBA ในแบบเดียวกัน คุณสามารถให้คำแนะนำเกี่ยวกับวิธีการสัมภาษณ์ได้หรือไม่?

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