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

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

1
noexpand hint สำหรับรุ่นที่ไม่ใช่ enterpise และประสิทธิภาพ
ฉันต้องใช้มุมมองที่จัดทำดัชนีเพื่อให้ได้ประสิทธิภาพ อย่างที่ฉันเห็นจากตารางเปรียบเทียบรุ่นมาตรฐานนี้ไม่รองรับมุมมองที่จัดทำดัชนีไว้ แต่ BOL พูดว่า: สามารถสร้างมุมมองที่จัดทำดัชนีใน SQL Server รุ่นใดก็ได้ ใน SQL Server Enterprise เครื่องมือเพิ่มประสิทธิภาพคิวรีจะพิจารณามุมมองที่จัดทำดัชนีโดยอัตโนมัติ หากต้องการใช้มุมมองที่จัดทำดัชนีไว้ในรุ่นอื่น ๆ ทั้งหมดจะต้องใช้คำใบ้ตาราง NOEXPAND มันจะทำงานได้ดี (ฉันกำลังพูดถึงการแสดง) select * from dbo.OrderTotals with (noexpand, index=IXCU_OrderTotals) บน SQL Server Standard edition และทำงานได้ select * from dbo.OrderTotals ในองค์กรหรือไม่ นี่คือรหัสสำหรับการดู: CREATE VIEW dbo.OrderTotals WITH SCHEMABINDING AS select OrderId = r.OrderId , …

4
มีเครื่องมือในการทำการเปรียบเทียบข้อมูลระหว่างสอง schema ที่แตกต่างกันหรือไม่?
เรากำลังย้ายฐานข้อมูลของเราไปยังสคีมาใหม่ แต่ต้องการตรวจสอบความถูกต้องของข้อมูลว่าถูกย้ายอย่างถูกต้องแล้ว เครื่องมือเปรียบเทียบข้อมูลแบบดั้งเดิมสามารถเปรียบเทียบสองฐานข้อมูลสำหรับความแตกต่างหากสกีมาเหมือนกัน ในกรณีของเรามีการเปลี่ยนแปลงการออกแบบตาราง แต่ข้อมูลทั้งหมดจาก schema เก่าอยู่ในใหม่มันเพิ่งถูกย้ายไปรอบ ๆ และฉันต้องแน่ใจว่าถูกต้อง เรามีหลายสิบล้านแถวเพื่อให้การตรวจสอบด้วยตนเองไม่ใช่ตัวเลือก มีเครื่องมือใดบ้างที่สามารถช่วยในการเปรียบเทียบประเภทนี้? ถ้าไม่มีไลบรารี่ / กรอบงานใดบ้างที่สามารถช่วยเริ่มต้นพัฒนาโซลูชันที่กำหนดเองได้? ฉันยินดีที่จะใช้โซลูชันเฉพาะฐานข้อมูลหากจำเป็นในกรณีนี้สำหรับ SQL Server 2008 โซลูตรอนของฉัน:ฉันกำลังเปรียบเทียบชุดข้อมูลสองชุดโดยการสร้างหนึ่งVIEWของแต่ละตารางบนฐานข้อมูลเก่าที่มีเขตข้อมูลเดียวกับตารางฐานข้อมูลใหม่ ฉันเปรียบเทียบข้อมูลโดยใช้เทคนิคที่อธิบายไว้ที่นี่: วิธีที่สั้นที่สุดเร็วที่สุดและง่ายที่สุดในการเปรียบเทียบสองตารางใน SQL Server: UNION! ฉันโชคดีในการโยกย้ายครั้งนี้เนื่องจากโครงสร้างของตารางโดยรวมคล้ายกับฐานข้อมูลเก่าโดยมีการย้ายเขตข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่งลดลงหรือเพิ่ม ในกรณีของการตกและเพิ่มไม่มีอะไรที่จะเปรียบเทียบสำหรับเขตข้อมูลที่ย้ายหรือถูกรวมฉันจะคำนวณในมุมมองเพื่อให้ข้อมูลที่ถูกต้องสำหรับการเปรียบเทียบ การUNIONเปรียบเทียบแสดงให้ฉันเห็นเฉพาะแถวที่มีความแตกต่างดังนั้นทันทีที่ข้อมูลถูกต้องฉันจะได้รับชุดผลลัพธ์ที่ว่างเปล่า

4
ปัญหาการนำเข้าของ Oracle เกิดจากชุดอักขระที่แตกต่างกัน
ฉันกำลังพยายามนำเข้าการส่งออกของ Oracle 11 ไปยัง Oracle 11 XE ฉันได้รับข้อความต่อไปนี้: นำเข้าใน XE fehlerhaft การนำเข้าทำได้ในชุดอักขระ WE8MSWIN1252 และชุดอักขระ AL16UTF16 NCHAR เซิร์ฟเวอร์นำเข้าใช้ชุดอักขระ AL32UTF8 (การแปลงชุดอักขระที่เป็นไปได้) ความคิดใด ๆ ฉันจะนำเข้าดัมพ์นี้ไปยัง Oracle 11 XE ได้อย่างไร แก้ไข: รับตาราง CREATE TABLE BDATA.Artikel( Key VARCHAR2(3) NOT NULL, Name VARCHAR2(60) NOT NULL, Abkuerzung VARCHAR2(5) NOT NULL ); ฉันได้รับข้อผิดพลาดเช่นนี้ IMP-00019: row rejected due to …
11 oracle  import 

3
คุณจะซิงค์ Master MySQL DB กับ Slave DB ใหม่ได้อย่างไรถ้า Master ทำการออฟไลน์
MySQL Server 1 ทำงานเป็น Master MySQL Server 2 ทำงานเป็น Slave ด้วยฐานข้อมูลออนไลน์ทั้งคู่พวกเขาอยู่ใน "ซิงค์ที่สมบูรณ์แบบ" หาก Slave ออฟไลน์จะไม่มีปัญหาหาก Master ยังคงออนไลน์ พวกเขาจะกลับไปซิงค์อีกครั้งเมื่อ Slave ออนไลน์อีกครั้ง นอกเหนือจากการกำหนดค่าเซิร์ฟเวอร์ฉันเปลี่ยนเส้นทางการเชื่อมต่อ (ด้วยรหัส JSP) สำหรับฐานข้อมูล Slave ถ้าเจ้านายเป็นออฟไลน์ (ฉันทดสอบแน่นอนด้วย /etc/init.d/mysqld หยุด) เมื่อ Master กลับมาออนไลน์จะมีวิธีการใดในการซิงค์ Master กับการอัพเดต Slave โดยอัตโนมัติหรือไม่?

3
คอลัมน์“ ชื่อ” เวทมนต์มาจากไหน?
ฉันได้รับสิ่งนี้โดยไม่ได้ตั้งใจ: db=> select name from site; ERROR: column "name" does not exist LINE 1: select name from site; ^ db=> select site.name from site; name --------------- (1,mysitename) (1 row) เคียวรีที่สองส่งคืน tuple ที่มีทั้งแถว ใช้ postgres 9.0.1 แก้ไข: คำจำกัดความของเว็บไซต์ตามคำขอ ฉันไม่สำคัญเลย, เรื่องแปลกประหลาดนี้ใช้ได้กับทุกโต๊ะ db=> \d site Table "public.site" Column | Type | Modifiers --------+---------+--------------------------------------------------- …

5
เครื่องมือในการโยกย้ายจาก SQLite ไปยัง PostgreSQL
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันต้องย้ายอย่างต่อเนื่องจาก SQLite ไปยัง PostgreSQL อย่างต่อเนื่องฉันหมายความว่าฉันจะนำเข้าฐานข้อมูล SQLite ไปยัง PostgreSQL ทุกวัน มันจะดีถ้าฉันสามารถเปลี่ยนแปลงตารางใน SQLite ตามที่ฉันต้องการได้โดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ กับฐานข้อมูล PostgreSQL ด้วยตนเอง ฉันจะเรียกใช้การย้ายข้อมูลจาก Python แต่อาจเป็นเครื่องมือภายนอกที่สามารถควบคุมได้จากบรรทัดคำสั่ง เครื่องมือนี้ต้องพร้อมใช้งานสำหรับ Linux และมันก็ดีถ้ามันทำงานบน Windows ด้วย

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

5
วิธีการตรวจสอบการหยุดชะงัก
คุณเริ่มแก้ไขปัญหาการหยุดชะงักของ SQL Server 2005/2008 เมื่อใดและอย่างไร การแจ้งเตือนถูกเปิดใช้งาน SSMS ผ่านการแจ้งเตือนสภาพประสิทธิภาพของ SQL Server, วัตถุ -> SQLServer: ล็อค, Counter-> ล็อค Waits / Sec, อินสแตนซ์: _Total, การแจ้งเตือนหากตัวนับ: เพิ่มขึ้นสูงกว่าค่า 3 นี่เป็นวิธีเชิงรุก ค่าที่ยอมรับได้คืออะไร? ฉันขอขอบคุณที่คุณช่วย ขอขอบคุณ!!!

2
เหตุใดแบบสอบถามนี้ทำให้เกิดการหยุดชะงัก
เหตุใดแบบสอบถามนี้ทำให้เกิดการหยุดชะงัก UPDATE TOP(1) system_Queue SET [StatusID] = 2, @ID = InternalID WHERE InternalID IN ( SELECT TOP 1 InternalID FROM system_Queue WHERE IsOutGoing = @IsOutGoing AND StatusID = 1 ORDER BY MessageID ASC, InternalID ASC) เพิ่มกราฟการหยุดชะงัก: <keylock hobtid="72057594236436480" dbid="9" objectname="Z.dbo.system_Queue" indexname="PK_system_Queue" id="lock5b25cc80" mode="X" associatedObjectId="72057594236436480"> <owner-list> <owner id="processc6fe40" mode="X"/> </owner-list> <waiter-list> …

1
วิธีค้นหาหน้าเสียหายใน SQL Server 2008
ฉันรู้ว่าฉันสามารถรันDBCC CHECKDBและรับสถานะฐานข้อมูลของฉันได้ คำถาม ฉันจะค้นหาได้อย่างไรหากมีหน้าข้อมูลที่เสียหายในฐานข้อมูลของฉัน หากเกิดข้อผิดพลาดเนื่องจากความเสียหายของหน้าฉันจะพบหน้าไหนที่เสียหาย ฉันจะค้นหาหมายเลขหน้าของแต่ละหน้าที่เสียหายได้อย่างไร ใครสามารถบอกฉันได้ว่าจะหารหัสหน้าเหล่านั้นได้จากที่ใด

2
A Non-DBA ถาม: วิธีการคัดลอก / ย้ายอินสแตนซ์ SQL Server ไปยังเซิร์ฟเวอร์อื่นผ่านทาง Backup / Restore อย่างไม่ลำบาก
เราเพิ่งมีเซิร์ฟเวอร์ใหม่ดังนั้นฉันต้องการคัดลอกอินสแตนซ์ SQL Server 2008 ที่มีอยู่ไปจากกล่องฐานข้อมูลเก่า ปกติแล้วฉันจะทำสิ่งนี้โดยการคัดลอก. mdf และล็อกไฟล์และแนบไฟล์เหล่านั้น แต่ฉันไม่สามารถใช้ dbs off line ได้เนื่องจากพวกเขาใช้งานตลอด 24 ชั่วโมงทุกวันดังนั้นฉันจึงสำรองฐานข้อมูลและเรียกคืนไฟล์ใหม่ เครื่อง อย่างไรก็ตามผมได้จบลงด้วยสองสามประเด็นหนึ่งของพวกเขาที่เกี่ยวข้องกับผู้ใช้กำพร้า ดังนั้นสิ่งที่ฉันกำลังมองหาคือกระบวนการที่ไม่ปลอดภัยในการเคลื่อนย้ายทุกอย่างไปด้วยความยุ่งยาก / รำคาญ / ปวดหัวน้อยที่สุด ฉันเป็น. dev ที่มีจำนวน SQL อยู่พอสมควร แต่การทำงานภายในของ SQL Server ส่วนใหญ่เป็นเรื่องลึกลับสำหรับฉันและฉันพบว่าเอกสาร MS เจ็บปวดต่อการอวนลาก กรุณาช่วย.

1
SQL Server 2008 R2 Dirty อ่านแล้ว - ไม่ใช่อะตอมอย่างไร?
ฉันสงสัยว่า "การอ่านที่สกปรก" สกปรกแค่ไหนนั้นสามารถอยู่ภายใต้ระดับการแยกแบบไม่ต้องอ่านได้ ฉันเข้าใจว่าแถวที่ได้รับการปรับปรุงแล้วแต่ยังไม่ได้มีการยืนยันจะปรากฏให้เห็น แต่: แถวสามารถปรากฏเป็นอัปเดตบางส่วนได้หรือไม่นั่นคือบางคอลัมน์มีการอัปเดตและบางคอลัมน์ไม่ได้ คอลัมน์เดียวสามารถปรากฏการปรับปรุงบางส่วน ตัวอย่างเช่นถ้าคุณมีคอลัมน์ varchar (4000) ที่อยู่ในกระบวนการของการปรับปรุงอย่างสมบูรณ์และสมมติว่ามันมี 4,000 ตัวอักษร คุณสามารถอ่านพูดว่า 2k chars จากสถานะก่อนหน้าและ 2k chars จากสถานะใหม่ได้หรือไม่? แล้ว varchar (สูงสุด) ที่มีความยาว> 8k อัปเดต: หลังจากมีการโต้วาทีความเห็นร่วมขั้นต่ำคือถ้าขนาดคอลัมน์> 8KB ผู้อ่านสกปรกแม้อยู่ในคอลัมน์ก็เป็นไปได้

2
การเคลื่อนย้ายข้อมูลขนาดใหญ่
ฉันต้องการย้ายหลายพันล้านแถวจาก schema1.table1 ไปยัง schema2.table2 ใหม่โดยที่ table2 เป็น refactored หนึ่งจาก table1 ดังนั้นโครงสร้างตารางของพวกเขาจึงแตกต่างกัน ทั้ง table1 และ table2 ถูกแบ่งพาร์ติชั่น แต่ table2 ว่างเปล่า สกีมาทั้งสองนี้อยู่ในฐานข้อมูล Oracle เดียวกัน ประสิทธิภาพของวิธีที่มีประสิทธิภาพในการโยกย้ายข้อมูลนี้ คุณต้องการที่จะดำเนินการเฉพาะที่ส่วนท้ายสุดหรือเลือกที่จะกระทำที่เพิ่มขึ้น? นั่นคือสมมติว่าการย้ายข้อมูลล้มเหลวหลังจากทำ 99% ของงานซึ่งใช้เวลาไม่กี่ชั่วโมง ตอนนี้คุณย้อนกลับหรือไม่ หากคุณเพิ่มความมุ่งมั่นคุณจะจัดการกับความล้มเหลวได้อย่างไร
11 oracle 

8
คอลัมน์ตัวตนหรือ UDF ที่สร้างรหัสเฉพาะอย่างชัดเจน?
ผมอยู่ในช่วงกลางของการอภิปรายเกี่ยวกับว่ามันจะดีกว่าที่จะทำให้PRIMARY KEYออกมาจากคอลัมน์ประจำตัวของเราออกจาก UDF ที่ชัดเจนสร้างรหัสที่ไม่ซ้ำกัน ฉันโต้เถียงกับคอลัมน์ข้อมูลประจำตัว คู่ของฉันกำลังโต้เถียงในการสร้างค่าด้วยตนเองเขาอ้างว่า โดยใส่ UDF ลงในตารางอื่นที่เราสามารถมี UDF ได้ ล็อคทรัพยากร เพิ่มตาราง ID ด้วยหนึ่งฟิลด์ที่เรียกID_Valueโดย1 ใช้สิ่งนี้เป็นตัวระบุที่ไม่ซ้ำกันระดับโลก หรือมีตารางทำid+1เมื่อแทรก ง่ายกว่าที่จะย้ายข้อมูลระหว่างเซิร์ฟเวอร์และ / หรือสภาพแวดล้อมที่ไม่มีข้อ จำกัด ในการระบุ ย้ายจากฐานข้อมูลหนึ่งที่มีข้อมูลไปยังฐานข้อมูลอื่นที่คล้ายกันพร้อมให้บอกว่าการจัดเตรียมหรือข้อมูลจำลอง สำหรับการทดสอบที่ไม่ใช่การผลิตเราอาจต้องการดึงระเบียนทั้งหมดจากเมื่อวานนี้ลงไปยังการจัดเตรียมสำหรับการทดสอบ การใช้งานแบบใดที่เหมาะสมกว่า

1
ฉันจะกำหนดค่าสุ่มที่แตกต่างให้กับแต่ละแถวในคำสั่ง SELECT ได้อย่างไร
โปรดดูรหัสนี้: create table #t1( id int identity (1,1), val varchar(10) ); insert into #t1 values ('a'); insert into #t1 values ('b'); insert into #t1 values ('c'); insert into #t1 values ('d'); ตอนนี้เมื่อใดก็ตามที่คุณดำเนินการนี้ select *, ( select top 1 val from #t1 order by NEWID()) rnd from #t1 order by 1; …

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