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

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

2
นามแฝงของแบบสอบถามย่อยเหมือนกับนามแฝงข้อความค้นหาหลัก
ฉันมีแบบสอบถาม SQL ซึ่งมีชื่อแทนเหมือนกับนามแฝงของแบบสอบถามบางส่วน ตัวอย่างเช่น: select * from ROOM r where ... ( select * from ROAD r where ... ) วิธีนี้ใช้งานได้ดีเนื่องจากนามแฝงของแบบสอบถามย่อยดูเหมือนจะซ่อนตัวหลัก มันจะทำงานแบบนั้นในทุกกรณีหรือไม่? ฉันจะได้รับผลลัพธ์ที่ไม่ได้กำหนดหรือไม่? หากไม่เป็นเช่นนั้นฉันจะอ้างอิงถึงข้อความค้นหาหลักได้rอย่างไร

3
ฉันจะรับรายการตารางที่แบ่งพาร์ติชันทั้งหมดในฐานข้อมูลของฉันได้อย่างไร
ฉันจะรับรายการตารางที่แบ่งพาร์ติชันทั้งหมดในฐานข้อมูลของฉันได้อย่างไร ฉันควรดูตารางระบบ / DMVs ใด

3
ประสิทธิภาพของขั้นตอนการจัดเก็บเทียบกับแบบสอบถามแบบดิบ
ฉันได้อ่านมากทั้งสองด้านของการอภิปรายนี้: มีประสิทธิภาพที่มีนัยสำคัญที่จะได้รับโดยใช้วิธีการที่เก็บไว้เฉพาะกับแบบสอบถามแบบดิบหรือไม่ ฉันสนใจ SQL Server โดยเฉพาะ แต่จะสนใจในฐานข้อมูลใด ๆ และทั้งหมด

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

2
วิธีการกู้คืนฐานข้อมูล“ บรรจุอยู่”? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งพยายามคืนค่าการสำรองข้อมูล SQL Server ในพื้นที่ของฉันจากเครือข่าย ฉันประหลาดใจที่ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้: เกี่ยวกับข่าวสารเกี่ยวกับ 12824 ระดับ 16 สถานะ 1 บรรทัด 3 ค่า sp_configure 'การรับรองความถูกต้องของฐานข้อมูล' ต้องถูกตั้งค่าเป็น 1 เพื่อคืนค่าฐานข้อมูลที่มีอยู่ คุณอาจต้องใช้ RECONFIGURE เพื่อตั้งค่า value_in_use ข่าวสารเกี่ยวกับ 3013 ระดับ 16 สถานะ 1 บรรทัด 3 RESTORE DATABASE ถูกยกเลิกอย่างผิดปกติ ฉันต้องทำตามขั้นตอนใดบ้างเพื่อกู้คืนฐานข้อมูลได้สำเร็จ

2
ตำแหน่งของอนุประโยค ON หมายถึงอะไรจริง ๆ ?
JOIN ... ON ...ไวยากรณ์ปกติเป็นที่รู้จักกันดี แต่มันก็เป็นไปได้ที่จะวางตำแหน่งONประโยคแยกจากJOINที่มันสอดคล้องกับ นี่คือสิ่งที่ไม่ค่อยเห็นในทางปฏิบัติไม่พบในบทช่วยสอนและฉันไม่ได้พบแหล่งข้อมูลบนเว็บใด ๆที่แม้แต่กล่าวถึงสิ่งนี้ว่าเป็นไปได้ นี่คือสคริปต์ที่จะเล่นกับ: SELECT * INTO #widgets1 FROM (VALUES (1), (2), (3)) x(WidgetID) SELECT * INTO #widgets2 FROM (VALUES (1, 'SomeValue1'), (2, 'SomeValue2'), (3, 'SomeValue3')) x(WidgetID, SomeValue) SELECT * INTO #widgetProperties FROM (VALUES (1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')) x(WidgetID, PropertyName) --q1 SELECT …
23 sql-server  t-sql 

3
ให้ระบบไฟล์เข้าถึงบัญชีเสมือน SQLSERVERAGENT
ฉันพยายามให้สิทธิ์การNT Service\SQLSERVERAGENTเข้าถึงระบบไฟล์บัญชี Windows ตามคำตอบที่ทำเครื่องหมายไว้ในคำถามนี้ ฉันเชื่อว่าเป็นบัญชีบริการเสมือนจริงและไม่ปรากฏในแผงควบคุม ->พื้นที่บัญชีผู้ใช้ ฉันจะอนุญาตให้บัญชีบริการนี้เข้าถึงระบบไฟล์ได้อย่างไร โดยเฉพาะใน Windows 7 ฉันอ่านหลายวิธีแล้วและดูเหมือนจะไม่มีตัวเลือกสำหรับฉัน ฉันลองใช้วิธี PowerShell แต่คำสั่ง AD ไม่ใช่คำสั่งที่ถูกต้อง ฉันยังดาวน์โหลดและติดตั้งแพตช์ windows ที่จำเป็นสำหรับคำสั่งเหล่านั้น ฉันได้อ่านด้วยว่าฉันควรจะทำสิ่งนี้ผ่านทางตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL หรือสตูดิโอการจัดการ ฉันไม่สามารถคิดออกว่าจะปรับเปลี่ยนสิทธิ์เหล่านี้ได้ที่ไหน กระบวนการ บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL ล้มเหลวในการเริ่มต้นด้วยข้อความแสดงข้อผิดพลาดต่อไปนี้: Login failed for user 'NT SERVICE\SQLSERVERAGENT'. Reason: Failed to open the explicitly specified database 'msdb'. [CLIENT: <local machine>] จาก Googling ของฉันมันเกี่ยวข้องกับการอนุญาตของบัญชีนี้ ฉันไม่แน่ใจว่าฐานข้อมูลเสียหาย …

2
วิธีที่มีประสิทธิภาพที่สุดในการลบแถวจำนวนมากออกจาก postgres
ฉันสงสัยว่าวิธีที่มีประสิทธิภาพมากที่สุดคือการลบจำนวนแถวขนาดใหญ่ออกจาก PostgreSQL กระบวนการนี้จะเป็นส่วนหนึ่งของงานที่เกิดซ้ำทุกวันเพื่อนำเข้าข้อมูลจำนวนมาก (ส่วนที่แทรก + ลบ) ลงในตาราง อาจมีหลายพันแถวที่อาจลบเป็นล้านแถว ฉันมีไฟล์ของคีย์หลักหนึ่งรายการต่อบรรทัด ตัวเลือกสองตัวที่ฉันคิดว่ามีอยู่ตามลำดับด้านล่าง แต่ฉันไม่ทราบ / เข้าใจ internals ของ PostgreSQL มากพอที่จะทำการตัดสินใจอย่างชาญฉลาดซึ่งจะดีที่สุด ดำเนินการDELETEค้นหาสำหรับแต่ละแถวในไฟล์โดยใช้WHEREคีย์หลักอย่างง่าย(หรือจัดกลุ่มการลบเป็นกลุ่มnโดยใช้ส่วนIN()คำสั่ง) นำเข้าคีย์หลักเข้าสู่ตารางชั่วคราวโดยใช้COPYคำสั่งแล้วลบออกจากตารางหลักโดยใช้การเข้าร่วม ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมมาก!

3
คำเตือนสำหรับสถิติที่ขาดหายไปในแผนการดำเนินการ
ฉันมีสถานการณ์ที่ฉันไม่เข้าใจ แผนการดำเนินการของ SQL Server ของฉันบอกฉันว่าฉันไม่มีสถิติในตาราง แต่สถิติถูกสร้างขึ้นแล้ว: แต่ถ้าเราดูที่โต๊ะเราจะเห็นว่ามีสถิติที่สร้างขึ้นโดยอัตโนมัติ: บางคนสามารถช่วยให้เข้าใจว่าเป็นอย่างไร Auto_Update และ Auto_Create เปิดสถิติในฐานข้อมูลปัจจุบัน ฉันใช้ SQL Server 2014


1
วิธีการตั้งค่าหลายสาขาเป็นคีย์หลักใน MySQL?
ฉันมีโต๊ะที่มีทุ่งนา EmployeeID blahblah blahblah2 ..... RecordMonth RecodrdYear ดังนั้นพนักงานแต่ละคนควรมีรายการที่ตรงกันสำหรับเดือน, ปี, Emp # ฉันจะตั้งค่าตารางได้อย่างไร ดังนั้นฉันจะตั้งค่าตารางอย่างไรเพื่อให้ EmployeeID สามารถอัปเดตเดือนละครั้ง แต่ไม่สามารถมีสองรายการสำหรับเดือนและปีที่ตรงกันได้

3
คำว่า "SARGable" หมายถึงอะไรจริง ๆ ?
ผู้ใช้ SQL Server ใช้คำว่า "sargable" ฉันสงสัยว่ามีคำนิยามตลอดกาลที่ไม่เชื่อเรื่องการใช้งานจริงหรือไม่สำหรับ "sargable" ตัวอย่างเช่นWHERE foo LIKE '%bar%'มีการกล่าวโดยหลาย ๆ คนว่าจะไม่สามารถขายสินค้าได้แต่ RDBMS บางตัวสามารถใช้ดัชนีกับแบบสอบถามดังกล่าวได้ ถ้าเช่นนั้นแล้ว"ไม่ยอมแพ้"หมายถึงอะไร การอ้างอิงอื่น ๆ ทำให้คำสั่ง SQL ที่ตรงเป้าหมายคืออะไร?

2
วิธีการแบ่งพาร์ติชันตารางที่ไม่มีการแบ่งพาร์ติชันที่มีอยู่
ฉันมีตารางที่มีข้อมูลอยู่แล้ว: dbo.Test (col1,col2,col3....) ON [PRIMARY] ฉันต้องเปลี่ยนตารางนี้เพื่อให้มีการแบ่งพาร์ติชันเช่นนี้: dbo.Test(col1,col2,col3....) ON Ps_Date(Col2) ฉันจะทำสิ่งนี้ให้สำเร็จโดยไม่ต้องวางและสร้างโต๊ะขึ้นใหม่ได้อย่างไร?

1
ทำไมดัชนีที่ไม่ได้จัดกลุ่มของฉันใช้พื้นที่มากขึ้นเมื่อฉันลบแถว
ฉันมีตารางขนาดใหญ่ที่มี 7.5 พันล้านแถวและ 5 ดัชนี เมื่อฉันลบประมาณ 10 ล้านแถวฉันสังเกตว่าดัชนีที่ไม่ได้จัดกลุ่มดูเหมือนจะเพิ่มจำนวนหน้าเว็บที่เก็บไว้ ฉันเขียนแบบสอบถามdm_db_partition_statsเพื่อรายงานความแตกต่าง (หลัง - ก่อน) ในหน้า: ดัชนี1เป็นดัชนีคลัสเตอร์ดัชนี2เป็นคีย์หลัก ส่วนอื่น ๆ นั้นไม่เป็นแบบคลัสเตอร์และไม่ซ้ำใคร เหตุใดหน้าต่างๆจึงเพิ่มขึ้นสำหรับดัชนีที่ไม่ใช่คลัสเตอร์เหล่านั้น ฉันคาดว่าตัวเลขจะแย่ที่สุดเหมือนกัน ฉันเห็นเคาน์เตอร์วัดประสิทธิภาพรายงานการเพิ่มขึ้นของการแยกหน้าระหว่างการลบ เมื่อลบแล้วระเบียนผีต้องย้ายไปหน้าอื่นหรือไม่ สิ่งนี้เกี่ยวข้องกับ "ตัวระบุเฉพาะ" หรือไม่ เรากำลังอยู่ระหว่างการเปิดตัว RCSI แต่ตอนนี้ RCSI ปิดอยู่ มันเป็นโหนดหลักในกลุ่มความพร้อมใช้งาน ฉันรู้ว่าสแน็ปช็อตนั้นใช้กับคนที่สอง ฉันจะแปลกใจถ้านั่นเกี่ยวข้อง ฉันวางแผนที่จะขุดลงในนี้ (ดูผลลัพธ์หน้า dbcc) เพื่อเรียนรู้เพิ่มเติม หวังว่าจะมีบางคนเห็นสิ่งที่คล้ายกัน

3
ฐานข้อมูลกลุ่มความพร้อมใช้งานของเซิร์ฟเวอร์กระจาย SQL ไม่ซิงค์หลังจากรีบูตเซิร์ฟเวอร์
เราพร้อมที่จะทำการอัปเกรดจำนวนมากบนเซิร์ฟเวอร์ SQL ของเราและกำลังสังเกตเห็นพฤติกรรมที่ผิดปกติบางอย่างกับกลุ่มความพร้อมใช้งานแบบกระจายที่ฉันพยายามแก้ไขก่อนที่จะดำเนินการต่อ เดือนที่แล้วฉันอัปเกรดเซิร์ฟเวอร์รองระยะไกลจาก SQL Server 2016 เป็น SQL Server 2017 เซิร์ฟเวอร์นี้เป็นส่วนหนึ่งของกลุ่มความพร้อมใช้งานแบบกระจาย (DAG)และกลุ่มความพร้อมใช้งานแยกต่างหาก(AG)หลายกลุ่ม เมื่อเราอัปเกรดเซิร์ฟเวอร์นี้เราไม่ทราบว่าจะเข้าสู่สถานะที่อ่านไม่ได้ดังนั้นในช่วงเดือนที่ผ่านมาเราได้พึ่งพาเซิร์ฟเวอร์หลักเพียงอย่างเดียว เป็นส่วนหนึ่งของการอัปเกรดที่จะเกิดขึ้นฉันใช้CU 4 patch กับเซิร์ฟเวอร์และทำการบูทใหม่ เมื่อเซิร์ฟเวอร์กลับมาออนไลน์อีกครั้งรองที่เพิ่งได้รับการปรับปรุงแสดงให้เห็นว่า DAGs / AG ทั้งหมดซิงค์กันโดยไม่มีปัญหาใด ๆ อย่างไรก็ตามตัวละครหลักกำลังแสดงเรื่องราวที่แตกต่างกันมาก มีรายงานว่า AG แยกต่างหากกำลังซิงค์โดยไม่มีปัญหาใด ๆ แต่ DABs ความได้ในไม่ Synchronzing / ไม่ดีต่อสุขภาพของรัฐ หลังจากตื่นตระหนกในตอนแรกฉันพยายามทำสิ่งต่าง ๆ ต่อไปนี้เพื่อให้สิ่งต่าง ๆ ซิงโครไนซ์อีกครั้งใน DAG: จากหลักฉันหยุดและกลับมาเคลื่อนไหวข้อมูลต่อ สิ่งนี้ไม่ได้เริ่มซิงค์ข้อมูล ในครั้งที่สอง (อันที่ฉันเพิ่งแก้ไข) ฉันรันALTER DATABASE [<database] SET HADR …

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